为什么我无法调用Math.Round(double,int)重载

时间:2012-11-01 06:23:32

标签: c# .net floating-point double

在.NET库中有像
这样的功能 System.Math.Round(double, int)

但为什么我需要将double值转换为float以使其工作.. ??
请看以下屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:5)

以下功能

Math.Round(double value, int digits)

Math.Round(double value, int digits) returns a double

返回double。我发现您已尝试为float的输出定义d名称Math.Round(n,2),其中n是值1.12345和{{1}的两倍使用以下代码表示整数

2

您实际上会收到错误,因为上述函数的输出为double n = 1.12345; float d = Math.Round(n,2); 而不是double

float

您可以通过将Cannot implictly convert type 'double' to 'float'. An explicit conversion exists (are you missing a cast?) 更改为float d = Math.Round(n,2);

来解决此问题

谢谢, 我希望你觉得这很有帮助:)

答案 1 :(得分:1)

从double转换为float,您将失去精度,无法隐式执行。如果将float值赋给更准确的double变量,编译器就不会抱怨。