如何获得小数点后仅两位数的双精度值。
例如
如果
i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
此代码生成5.81403333
。
但我只想要5.81
。
那我该怎么办?
答案 0 :(得分:163)
DecimalFormat是格式化的NumberFormat的具体子类 十进制数。它具有各种旨在实现它的功能 可以解析和格式化任何语言环境中的数字,包括支持 适用于西方,阿拉伯和印度数字。它也支持不同 各种数字,包括整数(123),定点数 (123.4),科学记数法(1.23E4),百分比(12%)和货币 金额(123美元)。所有这些都可以进行本地化。
代码段 -
double i2=i/60000;
tv.setText(new DecimalFormat("##.##").format(i2));
输出 -
5.81
答案 1 :(得分:114)
String.format("%.2f", i2)
怎么样?
答案 2 :(得分:25)
在这里,我将向您展示如何使您的小数不会更短,这里我将它缩短为小数点后的4个值。
double value = 12.3457652133
value =Double.parseDouble(new DecimalFormat("##.####").format(value));
答案 3 :(得分:10)
我认为最好和最简单的解决方案是(KISS):
double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
答案 4 :(得分:10)
这将返回值,而不仅仅是格式化。
double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);
答案 5 :(得分:5)
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##");
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
答案 6 :(得分:3)
在将数字格式化为char序列时,应该在开发人员头中弹出的第一件事应该是关注这样的细节,例如是否可以反转操作。
其他方面正在提供适当的结果。所以你想截断数字或围绕它。
因此,在你开始之前,你应该问问自己,我是否对价值感兴趣。
为了实现您的目标,您有多种选择,但其中大部分都是Format和Formatter,但我建议您查看this answer。