在 java 中 Math.ceil() 中的答案会有所不同吗?
Answer is coming different in Math.ceil() in java?
当我在下面代码的 Math.ceil()
方法中使用 0.0 +
时,op=1
和 cl=11
的答案是 7,这是正确的。
(int)(Math.ceil((0.0 + op) / 2) + Math.ceil((0.0 + cl) / 2))
但是当我不使用 0.0 +
时答案是 5。
谁能帮我理解一下?
因为没有 0.0
表达式 op / 2
适用于整数值并产生一个整数:1/2
将 return 0
作为整数,而不是 0.5
.
使用 0.0 +
,您强制第一个操作数为双精度,然后除法对双精度进行运算,1.0 / 2
将按预期给出 0.5
。
注意:另一种(首选)方法是将操作数显式转换为 double 而不是使用 0.0 +
技巧。
当我在下面代码的 Math.ceil()
方法中使用 0.0 +
时,op=1
和 cl=11
的答案是 7,这是正确的。
(int)(Math.ceil((0.0 + op) / 2) + Math.ceil((0.0 + cl) / 2))
但是当我不使用 0.0 +
时答案是 5。
谁能帮我理解一下?
因为没有 0.0
表达式 op / 2
适用于整数值并产生一个整数:1/2
将 return 0
作为整数,而不是 0.5
.
使用 0.0 +
,您强制第一个操作数为双精度,然后除法对双精度进行运算,1.0 / 2
将按预期给出 0.5
。
注意:另一种(首选)方法是将操作数显式转换为 double 而不是使用 0.0 +
技巧。