Java System.out.println向上舍入计算

时间:2018-10-24 08:56:41

标签: java

仅从Java开始。在Google中找不到答案。有人可以解释为什么此操作的结果:

System.out.println(20 + -3 * 5 / 8));

是:19?

我假设默认情况下它将仅打印出整数结果,但是为什么将其四舍五入呢?结果是18.125,所以我希望可以打印18。是否总是将整数四舍五入?

谢谢!

3 个答案:

答案 0 :(得分:2)

...的关联性

20 + -3 * 5 / 8

等同于

20 + (-3 * 5 / 8)

(-3 * 5 / 8)朝四舍五入为零,因此为-1;因此20 +(-1)为19。

答案 1 :(得分:1)

好的。原因是整数除法四舍五入为零。因此,操作顺序是这样的。

-3 * 5 = -15
-15 / 8 = -1 (rounded towards zero)
20 + -1 = 19

答案 2 :(得分:1)

只是出于兴趣,您可以使用BigDecimal操作保留所需的值以获得正确的结果:

BigDecimal resultValue = BigDecimal.valueOf(-3).multiply(BigDecimal.valueOf(5)).divide(BigDecimal.valueOf(8));      
System.out.println(20 + resultValue.doubleValue());