1

有人可以告诉我什么是错的。当我在计算器中输入低和高等式时,我得到低 = 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));
4

3 回答 3

6

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

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

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

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

于 2012-06-02T20:23:39.467 回答
0

你在输入Math.round()计算器吗?

Math.round()提供 a long,没有小数部分。因此,您的期望low将包含分数部分是没有根据的。

于 2012-06-03T05:37:19.927 回答
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));
于 2012-06-02T20:27:50.213 回答