-2

我正在寻找 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# 中什么实现是合理的,这样他就不会拔出他的(最后剩下的)头发?

4

3 回答 3

6

您可以使用数学类。有很多重载形式Math.Floor

  1. Math.Floor(Double)
  2. 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
于 2013-03-07T02:14:32.353 回答
3

只需使用Math.Floor. 与 C++ 一样,它向负无穷大舍入floor。从文档中

此方法的行为遵循 IEEE 标准 754 第 4 节。这种舍入有时称为向负无穷舍入。换句话说,如果 d 为正,则任何小数部分都会被截断。如果 d 为负数,任何小数部分的存在都会导致它被四舍五入为较小的整数。

于 2013-03-07T02:14:53.320 回答
1

数学库可以满足您的需要。文档在这里。更重要的是,地板一词被定义为始终按照您的描述行事。有关数学底函数的详细信息,请参见维基百科

于 2013-03-07T02:15:40.357 回答