十进制后只显示两位数

时间:2012-06-09 08:05:04

标签: java android number-formatting

如何获得小数点后仅两位数的双精度值。

例如

如果

i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));

此代码生成5.81403333

但我只想要5.81

那我该怎么办?

7 个答案:

答案 0 :(得分:163)

使用DecimalFormat

  

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序列时,应该在开发人员头中弹出的第一件事应该是关注这样的细节,例如是否可以反转操作。

其他方面正在提供适当的结果。所以你想截断数字或围绕它。

因此,在你开始之前,你应该问问自己,我是否对价值感兴趣。

为了实现您的目标,您有多种选择,但其中大部分都是FormatFormatter,但我建议您查看this answer