为什么 Math.Round() 不支持浮点数
本文关键字:不支持 浮点数 Math Round 为什么 | 更新日期: 2023-09-27 17:56:22
为什么Math.Round()
不支持float
?
编辑:
人们不应该投票关闭它。它不是基于意见的。如下面的评论所述,Math.Round
不返回 int 有一个真正的技术原因,即大的浮点数不能存储在大小相似的整数中而不会溢出。
所以我问是否真的有原因float
重载不包括在Math.Round
、Math.Ceil
等中。
答案可能是否定的,但这并不意味着这个问题是基于意见的。
这取决于
你所说的"支持"是什么意思。
当您尝试调用具有其不直接支持的类型重载的方法(例如调用 Math.Round(float)
)时,它将尝试确定要调用的最佳版本(如果有)。 C# 语言规范 5.0 的第 7.5.3 节详细讨论了如何做到这一点。
由于float
可以隐式转换为double
,这意味着Math.Round(Double)
将被调用。
但是,该版本还会返回一个double
,因此,如果需要,则必须将结果显式转换为float
。