Java-误解ceil和floor方法
楼层: 返回小于或等于参数且等于数学整数的最大(最接近正无穷大)双倍值 ceil: 返回大于或等于参数且等于数学整数的最小(最接近负无穷大)双倍值 资料来源: 关于楼层:如果我键入Java-误解ceil和floor方法,java,math,theory,floor,ceil,Java,Math,Theory,Floor,Ceil,楼层: 返回小于或等于参数且等于数学整数的最大(最接近正无穷大)双倍值 ceil: 返回大于或等于参数且等于数学整数的最小(最接近负无穷大)双倍值 资料来源: 关于楼层:如果我键入系统输出打印(数学楼层(2.1))返回2.0。其他示例:System.out.print(数学地板(2.8))返回2.0。我将用这个例子来论证这个描述:如果floor(2.1)是最大的(最接近正无穷大),那么结果将是3.0而不是2.0,因为我认为2.0最接近负无穷大。因此,如果我更改有关楼层的描述: 返回小于或等于参数
系统输出打印(数学楼层(2.1))代码>返回2.0
。其他示例:System.out.print(数学地板(2.8))代码>返回2.0
。我将用这个例子来论证这个描述:如果floor(2.1)
是最大的(最接近正无穷大),那么结果将是3.0
而不是2.0
,因为我认为2.0
最接近负无穷大。因此,如果我更改有关楼层的描述:
返回小于或等于参数且等于数学整数的最小(最接近负无穷大)双倍值
这对我来说很有意义,我理解floor(2.1)
返回2.0
当我读到“最接近正无穷大”和“最接近负无穷大”时,我在数字行中思考:
资料来源:
编辑:我想问的是:这个描述让我心碎。我的逻辑是(例如,关于地板):首先,好的,当我听地板时,我认为是最小的,而不是最大的。第二,如果我返回最大的值,那就不小于参数。ceil的情况也一样
返回小于或等于参数且等于数学整数的最大(最接近正无穷大)双倍值
关键是短语小于或等于参数
因此,2.0是最大的双精度值,它小于或等于也等于整数值的2.1
ceil同上:描述中提到了大于或等于输入值的最小值
因此,原来的描述事实上是正确的。您有问题吗?对于您对floor()
的“新的和改进的”描述,为什么floor(2.1)
会返回2.0
?毕竟,1.0
,0.0
,-1.0
。。。都接近负无穷大,都小于2.0
。在您的新定义下,floor
总是返回尽可能小的double
。重新编辑:如果您认为floor()
和ceil()
的当前描述是描述问题的,那么它们就非常有意义(特别是问题)。例如,floor(a)
解决了最大化f(x)=x的约束优化问题,但约束条件是x是整数,x我理解该短语中的关键。但是如果描述会说:“返回最小(最接近负无穷大)的双倍值”,我会理解整个描述,因为:floor(2.8)
返回2.0
@Jason只是在这里吹毛求疵,但“最大”表示最大的数量。这对正数没关系,但对于负数,它将返回负无穷大。我认为说“最大”而不是“最大”更清楚.YMMV。我想这就是为什么他们用最大值(最接近正无穷大)
来澄清。啊,我想我理解了这个描述。我试图理解:一边是“最大值”,另一边是“小于或等于参数”我将在ELI5中对此进行解释,因此在示例中:floor(2.8)
就像是说:“ehh最大值是2.8,所以在2.8到以下的范围内找到最大值。”