【发布时间】:2014-07-15 13:03:32
【问题描述】:
我在 java 中有一个返回整数的函数。我知道它应该返回什么,所以我知道它何时正确运行。无论如何,在 for 循环中的某个时刻有这行代码:
如果我这样写
miuf = miuf_ant * nf_ant / nf - ((double) ((t - 1) * hist[t - 1]) / (double) nf);`
结果很好。
如果我这样写
miuf = (miuf_ant * (nf_ant / nf) - ((double) ((t - 1) * hist[t - 1]) / (double) nf));
结果很差。
nf_ant、nf和t是ints,其余的是doubles。
我已经在调试器中对这两个表达式进行了几次迭代评估,结果通常相差 0.3 左右。为什么会发生这种情况,为什么一个有效而另一个无效?
【问题讨论】:
-
这不是很明显吗?您已经为操作顺序设置了自己的规则。
-
@Pascal Cuoq 在数学上,这两个写作是等价的。所以不要带着这样的cmets。这是我感到困惑的编程部分(如何评估结果),所以我问了。很简单。