在 java 中 Math.ceil() 中的答案会有所不同吗?

Answer is coming different in Math.ceil() in java?

当我在下面代码的 Math.ceil() 方法中使用 0.0 + 时,op=1cl=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 + 技巧。