仅从Java开始。在Google中找不到答案。有人可以解释为什么此操作的结果:
System.out.println(20 + -3 * 5 / 8));
是:19?
我假设默认情况下它将仅打印出整数结果,但是为什么将其四舍五入呢?结果是18.125,所以我希望可以打印18。是否总是将整数四舍五入?
谢谢!
答案 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());