【问题标题】:Why I can't call Math.Round(double,int) overload为什么我不能调用 Math.Round(double,int) 重载
【发布时间】:2012-11-01 06:23:32
【问题描述】:

在 .NET 库中有类似函数
System.Math.Round(double, int)

但是为什么我需要将 double 值转换为 float 才能使其工作..??
看下面的截图:

【问题讨论】:

  • stackoverflow.com/questions/618535/…。这是你要求的吗?
  • 我已经看过这个了。这不是 4 wht 我 lukin 4 ..? @Mullaly
  • 你的问题是为什么没有从 double 到 float 的隐式转换?
  • 其实我的错。我认为错误出在函数调用中。但事实并非如此。这是因为我将其返回值存储在 float @Mullaly

标签: c# .net floating-point double


【解决方案1】:

下面的函数

Math.Round(double value, int digits)

返回double。我看到您已尝试将名称为 dfloat 定义为 Math.Round(n,2) 的输出,其中 n 是值 1.12345 的两倍,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); 更改为double d = Math.Round(n,2); 来解决此问题

谢谢,
希望对您有所帮助 :)

【讨论】:

    【解决方案2】:

    从 double 转换为 float,您将失去精度,并且无法隐式完成。如果将浮点值分配给更准确的双精度变量,编译器不会报错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多