数学计算不正确

时间:2012-06-02 20:18:10

标签: java android math

有人可以告诉我出了什么问题。当我输入低和高的方程式到计算器时,我得低= 118.129高= 113.629 但由于某些原因,当我运行代码时,低和高都显示为119.0。

match_FRC = 82;//Double.parseDouble(FRC_match_textbox.getText().toString());
match_DTR = 1.455;//Double.parseDouble(DTR_match_textbox.getText().toString());

//math functions 
low = Math.round((match_FRC * match_DTR)/((1/100)+1));
high = Math.round((match_FRC * match_DTR)/((5/100)+1));

3 个答案:

答案 0 :(得分:6)

您需要使用浮点常量而不是整数,例如:

low = Math.round((match_FRC * match_DTR)/((1.0 / 100)+1));

实际上,((1 / 100) + 1)是一个整数表达式,其计算结果恰好为1。

1转换为1.0(或100转换为100.0)将导致其他操作数(以及整个表达式)升级为浮点数。

答案 1 :(得分:0)

我像数学一样简单!

5/100 (Integer) = 0
0 + 1 = 1
82*1.455 = 119.31
119.31 / 1 = 119.31
round ( 119.31 ) = 119

只需将100更改为100.0

low = Math.round((match_FRC * match_DTR)/((1/100.0)+1));
high = Math.round((match_FRC * match_DTR)/((5/100.0)+1));

答案 2 :(得分:0)

您是否在计算器中输入Math.round()

Math.round()发送long,没有小数部分。因此,low包含一个分数部分的期望没有基础。