【发布时间】:2016-11-02 18:02:52
【问题描述】:
能否提供一些关于此代码输出 40 的原因的见解? 我尝试使用双精度而不是整数并使用 Math.round 方法 确保不是精度问题。
{
int x,y ;
x = ((( 80 + 80 + 80 + 80 + 80) / 500) * 100);
y = ((x / 2) + (80 / 4) + (80 / 4));
System.out.println(y);
}
我用计算器和我自己的脑袋计算了同样的表达式 总而言之,它应该是80!如果我犯了一个非常愚蠢的错误,我想 知道,但除此之外我只是好奇这是为什么以及如何解决它,提前谢谢!
【问题讨论】:
-
您期望
x的值是多少,您检查过那部分吗?提示:你所有的操作都是整数,而 400/500 在整数算术中是 0... -
最终只有
(80 / 4) + (80 / 4)很重要 -
我认为@JonSkeet 在这里是正确的。在 Python 中,x 的计算结果为零,因为它是整数运算。
标签: java math evaluation