Android计算器数字四舍五入

时间:2015-04-14 20:43:41

标签: java android

所以我的计算器给了我像 30.122345353 这样的回答。

问题 我怎样才能把它变成 30.122 ? 这是我的代码的一部分。我需要它来回答来自(ans +"")

的答案

这是我的代码

if (v.getId() == R.id.Badd) if (num2 == 0) flag = true;
    else ans = 2 * num1;
    tv2.setText(ans + "");

5 个答案:

答案 0 :(得分:2)

将double舍入为int的简单方法:

int result = ((int)(yourDouble+0.5));

或:

public Double roundMyValue(String value){
DecimalFormat df=new DecimalFormat("0.000");
return (Double)df.parse(df.format(value)) ;
}

或简单的事情:

public Double roundMyValue(String value){
double current=Double.parseDouble(value);
int temp = current*1000;
return (Double)temp/1000;
}

答案 1 :(得分:1)

您可以像这样使用DecimalFormat -

DecimalFormat decimalFormat = new DecimalFormat("#0.###");
decimalFormat.format(ans);

答案 2 :(得分:1)

您可以使用DecimalFormater:)

DecimalFormat df=new DecimalFormat("0.000");
String formate = df.format(ans); 
double finalValue = (Double)df.parse(formate) ;

那应该可以解决你的问题。但是,如果您需要其他帮助,可以在StackOverflow上的其他帖子中回答这个问题:Here

一切顺利:)

请告诉我结果。

祝你好运!

答案 3 :(得分:1)

This solution提供了一种将数字舍入到一定数量小数位的方法

答案 4 :(得分:1)

你可以在其他答案旁边,也可以通过将结果乘以10 ^ n来舍入数字,其中n代表你想要达到的最后一个有效小数点,然后通过转换为int来对此进行舍入(对于数学家来说正确的舍入加0.5)然后再将其除以10 ^ 3

也许像这样的方法可以解决问题:

爪哇:

public double rndMyNmb(double number,int decimalPoint);
{
    number*=Math.pow(10,decimalPoint);
    number=(int)(number+0.5);
    return number/Math.pow(10,decimalPoint);
}

ofc你可以将方法中的所有内容写成一行:

return (double)((int)(number*Math.pow(10,decimalPoint)+0.5)/Math.pow(10,decimalPoint));