Why I can't call Math.Round(double,int) overload

醉酒当歌 提交于 2020-01-06 11:00:21

问题


In .NET Library there is Function like
System.Math.Round(double, int)

But why I need to cast double value to float to make it work..??
Look on the following screenshot:


回答1:


The following function

Math.Round(double value, int digits)

Returns a double. I see that you have tried to define a float of name d to the output from Math.Round(n,2) where n is a double of value 1.12345 and 2 represents an integer using the following code

double n = 1.12345;
float d = Math.Round(n,2);

You'll actually get an error because the output from the above function is double and not a float.

Cannot implictly convert type 'double' to 'float'. An explicit conversion exists (are you missing a cast?)

You may fix this by changing float d = Math.Round(n,2); to double d = Math.Round(n,2);

Thanks,
I hope you find this helpful :)




回答2:


Converting from double to float, you will lose precision and it cannot be done implicitly. If you assign a float value to a double variable which is more accurate, the compiler will not complain.



来源:https://stackoverflow.com/questions/13171994/why-i-cant-call-math-rounddouble-int-overload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!