为什么不Math.Round()
支持float
?
修改
人们不应该投票来关闭它。 不基于意见。正如下面的评论中所述,有一个真正的技术原因Math.Round
没有返回int,即大的浮点数不能存储在相似大小的整数中而不会溢出。
因此,我想知道float
,Math.Round
等中是否存在Math.Ceil
重载的实际原因。
答案可能是否定的,但这并不意味着这个问题是基于意见的。
答案 0 :(得分:4)
这取决于你的意思"支持。"
当您尝试调用具有不直接支持的类型(例如调用Math.Round(float)
)的重载的方法时,它将尝试确定要调用的最佳版本(如果有)。如何做到这一点将在C#语言规范5.0的第7.5.3节中详细讨论。
由于float
可以是implicitly converted到a double
,这意味着将会调用Math.Round(Double)
。
但是,该版本还会返回double
,因此您必须explicitly cast将结果设为float
,如果这是您想要的。