如何获取小数点后两位的double值。
例如,如果 a = 190253.80846153846 那么结果值应该像 a = 190253.80
尝试: 我试过这个:
public static DecimalFormat twoDForm = new DecimalFormat("#0.00");
在代码中
a = Double.parseDouble(twoDForm.format(((a))));
但我得到的值是 190253.81 而不是我想要的值 190253.80
那么我应该为此改变什么??
最佳答案
因为 Math.round() 返回最接近参数的 int。通过加 1/2、取结果的底数并将结果转换为 int 类型,将结果四舍五入为整数。
使用 Math.floor()
示例
public static double roundMyData(double Rval, int numberOfDigitsAfterDecimal) {
double p = (float)Math.pow(10,numberOfDigitsAfterDecimal);
Rval = Rval * p;
double tmp = Math.floor(Rval);
System.out.println("~~~~~~tmp~~~~~"+tmp);
return (double)tmp/p;
}
完整源代码
class ZiggyTest2{
public static void main(String[] args) {
double num = 190253.80846153846;
double round = roundMyData(num,2);
System.out.println("Rounded data: " + round);
}
public static double roundMyData(double Rval, int numberOfDigitsAfterDecimal) {
double p = (float)Math.pow(10,numberOfDigitsAfterDecimal);
Rval = Rval * p;
double tmp = Math.floor(Rval);
System.out.println("~~~~~~tmp~~~~~"+tmp);
return (double)tmp/p;
}
}
关于java - Android : How to get just two digit after the point in decimal value ? 不想截断值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8643995/