floor:
返回不大于参数且等于数学整数的最大双精度浮点数值。 ...
ceil:
返回不小于参数且等于数学整数的最小双精度浮点数值。 ...
来源:Oracle文档
关于 floor :如果我输入 System.out.print(Math.floor(2.1));
返回 2.0
。另一个例子: System.out.print(Math.floor(2.8));
返回 2.0
。 我要用这个例子来解释这个描述:如果 floor(2.1)
是最大(接近正无穷大)的结果应该是 3.0
而不是 2.0
,因为 2.0
更接近负无穷。 因此,如果我更改关于floor的说明:
返回不小于参数且等于数学整数的最小双精度浮点数值。 ...
对我来说很有意义,我会理解 floor(2.1)
返回 2.0
当我读到“接近正无穷大”和“接近负无穷小”时,我想到数轴:
来源:Quora
编辑:我的问题是:这个描述搞砸了我的思路。我的逻辑是(例如关于 floor):首先,好的,当我听到floor时,我想到的是最小的而不是最大的。其次,如果返回最大值,则该值应大于参数。ceil 也是同理。
floor()
描述,为什么floor(2.1)
会返回2.0
呢?毕竟,1.0
、0.0
、-1.0
等都比2.0
更接近负无穷大且更小。 - Ted Hoppfloor
总是返回最小可能的double
。 - Dawood ibn Kareemfloor()
和ceil()
的当前描述视为描述约束优化问题(特别是整数规划问题),则它们的描述是完全合理的。例如,floor(a)
解决了约束优化问题,即最大化f(x)= x,其中x是整数且x <= a。 - Ted Hopp