为什么Math.Round()不支持浮点数?

时间:2016-07-10 04:42:12

标签: c# math

为什么不Math.Round()支持float

修改

人们不应该投票来关闭它。 基于意见。正如下面的评论中所述,有一个真正的技术原因Math.Round没有返回int,即大的浮点数不能存储在相似大小的整数中而不会溢出。

因此,我想知道floatMath.Round等中是否存在Math.Ceil重载的实际原因。

答案可能是否定的,但这并不意味着这个问题是基于意见的。

1 个答案:

答案 0 :(得分:4)

这取决于你的意思"支持。"

当您尝试调用具有不直接支持的类型(例如调用Math.Round(float))的重载的方法时,它将尝试确定要调用的最佳版本(如果有)。如何做到这一点将在C#语言规范5.0的第7.5.3节中详细讨论。

由于float可以是implicitly converteda double,这意味着将会调用Math.Round(Double)

但是,该版本还会返回double,因此您必须explicitly cast将结果设为float,如果这是您想要的。