public void onButtonClick(View v) {
int n1, n2, n3;
double calc;
EditText e1 = (EditText)findViewById(R.id.first_grade);
EditText e2 = (EditText)findViewById(R.id.second_grade);
EditText e3 = (EditText)findViewById(R.id.third_grade);
TextView t1 = (TextView)findViewById(R.id.calculate);
n1 = Integer.parseInt(e1.getText().toString());
n2 = Integer.parseInt(e2.getText().toString());
n3 = Integer.parseInt(e3.getText().toString());
calc = (n1 + n2 + n3)/3;
t1.setText(String.format("%.2f", calc));
}
这是我的代码,我也尝试过DecimalFormat,但是堆栈溢出的解决方案对我来说都不管用。
如果我分别把11,22,10作为输入,我应该得到一个14.333333的结果,但结果是14.00。
有人知道如何修复这个错误吗?或者有办法解决这个问题?
发布于 2015-12-11 21:05:45
由于变量n1
、n2
和n3
都是ints
,所以它们的和以及后续除法也是整数。因此,结果被截断为整数。
为了得到准确的结果,你应该强迫除法是浮点除法.要做到这一点,其中一个操作数应该是一个双操作数。您可以通过用3
替换3.0
来强制这样做。
(n1 + n2 + n3) / 3.0
接下来,我们如何将结果除以两个小数位数。我们可以将结果乘以100,执行整数除法,然后再除以100,然后转换为双倍。
((n1 + n2 + n3) * 100 / 3) / 100.0
您可以看到在this question中进行循环的其他方法。
发布于 2015-12-11 21:05:05
问题在于下面的代码行
calc = (n1 + n2 + n3) / 3;
所有的值都是整数,所以它通过整数除法将(11 + 22 + 10) / 3
计算为整数值14。
如果将除数改为双因子,结果将是浮点数算法。
calc = (n1 + n2 + n3) / 3.0;
发布于 2015-12-11 21:05:13
尝试将整数结果转换为双倍。
calc =(double) (n1 + n2 + n3)/3;
https://stackoverflow.com/questions/34232480
复制相似问题