我正在寻找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 ++审阅者将检查我的代码,因此在C#中floor
的哪些实现是合理的,这样他就不会拉出他的(最后剩下的)头发?
答案 0 :(得分:6)
您可以使用Math课程。 Math.Floor
Math.Floor(Double)
Math.Floor(Decimal)
简单用法:
Math.Floor(2.3) // == 2.0
Math.Floor(3.8) // == 3.0
Math.Floor(-2.3) // == -3.0
Math.Floor(-3.8) // == -4.0
答案 1 :(得分:3)
只需使用Math.Floor
即可。它向负无穷大转向,C ++ floor
也是如此。来自the documentation:
此方法的行为遵循IEEE标准754第4节。这种舍入有时称为向负无穷大舍入。换句话说,如果d为正,则截断任何小数分量。如果d为负数,则任何小数分量的存在都会使其舍入为较小的整数。
答案 2 :(得分:1)
数学库可以满足您的需求。文档为here。更重要的是,术语“发言权”定义为始终按照您的描述行事。有关mathematical floor function
的详细信息,请参阅维基百科