首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中舍入到小数点2位。

在Android中舍入到小数点2位。
EN

Stack Overflow用户
提问于 2015-12-11 21:00:33
回答 3查看 653关注 0票数 1
代码语言:javascript
运行
复制
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。

有人知道如何修复这个错误吗?或者有办法解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-11 21:05:45

由于变量n1n2n3都是ints,所以它们的和以及后续除法也是整数。因此,结果被截断为整数。

为了得到准确的结果,你应该强迫除法是浮点除法.要做到这一点,其中一个操作数应该是一个双操作数。您可以通过用3替换3.0来强制这样做。

代码语言:javascript
运行
复制
(n1 + n2 + n3) / 3.0

接下来,我们如何将结果除以两个小数位数。我们可以将结果乘以100,执行整数除法,然后再除以100,然后转换为双倍。

代码语言:javascript
运行
复制
((n1 + n2 + n3) * 100 / 3) / 100.0

您可以看到在this question中进行循环的其他方法。

票数 2
EN

Stack Overflow用户

发布于 2015-12-11 21:05:05

问题在于下面的代码行

代码语言:javascript
运行
复制
calc = (n1 + n2 + n3) / 3;

所有的值都是整数,所以它通过整数除法将(11 + 22 + 10) / 3计算为整数值14。

如果将除数改为双因子,结果将是浮点数算法。

代码语言:javascript
运行
复制
calc = (n1 + n2 + n3) / 3.0;
票数 1
EN

Stack Overflow用户

发布于 2015-12-11 21:05:13

尝试将整数结果转换为双倍。

代码语言:javascript
运行
复制
calc =(double) (n1 + n2 + n3)/3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34232480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档