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

本文关键字:不支持 浮点数 Math Round 为什么 | 更新日期: 2023-09-27 17:56:22

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

编辑:

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

所以我问是否真的有原因float重载不包括在Math.RoundMath.Ceil等中。

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

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

这取决于

你所说的"支持"是什么意思。

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

由于float可以隐式转换为double,这意味着Math.Round(Double)将被调用。

但是,该版本还会返回一个double,因此,如果需要,则必须将结果显式转换为float