我正在寻找 C# 中 floor(x) 的实现,以便它与 C++ 版本匹配。
floor of 2.3 is 2.0
floor of 3.8 is 3.0
floor of -2.3 is -3.0
floor of -3.8 is -4.0
由于 C++ 审阅者将检查我的代码,floor
在 C# 中什么实现是合理的,这样他就不会拔出他的(最后剩下的)头发?
我正在寻找 C# 中 floor(x) 的实现,以便它与 C++ 版本匹配。
floor of 2.3 is 2.0
floor of 3.8 is 3.0
floor of -2.3 is -3.0
floor of -3.8 is -4.0
由于 C++ 审阅者将检查我的代码,floor
在 C# 中什么实现是合理的,这样他就不会拔出他的(最后剩下的)头发?
您可以使用数学类。有很多重载形式Math.Floor
简单用法:
Math.Floor(2.3) // == 2.0
Math.Floor(3.8) // == 3.0
Math.Floor(-2.3) // == -3.0
Math.Floor(-3.8) // == -4.0
只需使用Math.Floor
. 与 C++ 一样,它向负无穷大舍入floor
。从文档中:
此方法的行为遵循 IEEE 标准 754 第 4 节。这种舍入有时称为向负无穷舍入。换句话说,如果 d 为正,则任何小数部分都会被截断。如果 d 为负数,任何小数部分的存在都会导致它被四舍五入为较小的整数。
数学库可以满足您的需要。文档在这里。更重要的是,地板一词被定义为始终按照您的描述行事。有关数学底函数的详细信息,请参见维基百科