十进制数学错误的结果

时间:2017-09-23 08:37:02

标签: android math

我正在尝试制作数学代码。但我无法做到。

double x = z + ((z * (25.7 - (((z - 400) / 30) * 1.27))) / 100);
int d = (int) Math.round(x);

例如,如果z = 910。 真正的数学结果是,x = 947.401,d = 947,但它不是这个代码。

你能帮我解决吗?

1 个答案:

答案 0 :(得分:2)

你应该知道优先如何在编程中起作用

  • ()high Precedence
  • 然后/和*

  • - 和

在你的问题中

此声明z + ((z * (25.7 - (((z - 400) / 30) * 1.27))) / 100)将执行为

let z = 910

(z - 400) // result 510
then this (z - 400) / 30) // result 17
then this  (((z - 400) / 30) * 1.27))) // result 21.59
then this  (25.7 - (((z - 400) / 30) * 1.27)) //result 4.11 
then this  (25.7 - (((z - 400) / 30) * 1.27))) / 100) // result 0.2159
then this  ((z * (25.7 - (((z - 400) / 30) * 1.27))) / 100) // result 37.401
then this z + ((z * (25.7 - (((z - 400) / 30) * 1.27))) / 100) // final result 947.401

然后它会将947.401四舍五入并给你947