Java:d​​ouble:如何总是显示两位小数

时间:2013-06-12 07:50:00

标签: java double number-formatting

我在项目中使用double值,我希望始终显示前两位小数,即使它们是零。我使用此函数进行舍入,如果我打印的值是3.47233322,它(正确)打印3.47。但是,当我打印时,例如,它打印值为2.0。

public static double round(double d) {
    BigDecimal bd = new BigDecimal(d);
    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bd.doubleValue();
}

我要打印2.00!

有没有办法在不使用字符串的情况下执行此操作?

谢谢!

编辑:从你的回答(我感谢你)我知道我不清楚我在说什么(我很抱歉):我知道怎么打印两位数在使用您提出的解决方案的数字之后...我想要的是直接存储双值的两位数!所以,当我做这样的事情System.out.println("" + d)(其中d是我的双重值2)时,它打印2.00。

我开始认为没有办法做到这一点......对吗?无论如何,再次感谢您的回答,如果您知道解决方案,请告诉我们!

7 个答案:

答案 0 :(得分:49)

您可以使用以下内容:

 double d = 1.234567;
 DecimalFormat df = new DecimalFormat("#.00");
 System.out.print(df.format(d));

编辑实际上回答了这个问题,因为我需要真正的答案,这出现在Google上,有人将其标记为答案,尽管当小数位数为0时这不会起作用。

答案 1 :(得分:19)

使用java.text.NumberFormat

NumberFormat nf= NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);

System.out.print(nf.format(decimalNumber));

答案 2 :(得分:7)

你可以这样做:

double d = yourDoubleValue;  
String formattedData = String.format("%.02f", d);

答案 3 :(得分:3)

DecimalFormat是最简单的选择:

double roundTwoDecimals(double d) {
        DecimalFormat twoDecimals = new DecimalFormat("#.##");
        return Double.valueOf(twoDecimals.format(d));
}

希望这能解决你的问题...

答案 4 :(得分:1)

我会使用类似的东西:

System.out.printf("%.2f", theValueYouWantToPrint); 

这给你两位小数。

答案 5 :(得分:0)

java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##");
df.setMaximumFractionDigits(2); 
df.setMinimumFractionDigits(2); 

答案 6 :(得分:0)

您可以使用类似

的内容

如果你想在答案中保留0: 然后以格式String

使用(0.00)
double d = 2.46327;
DecimalFormat df = new DecimalFormat("0.00");
System.out.print(df.format(d));

输出:2.46

double d = 0.0001;
DecimalFormat df = new DecimalFormat("0.00");
System.out.print(df.format(d));

输出:0.00

但是,如果您使用DecimalFormat df = new DecimalFormat(" 0。##");

double d = 2.46327;
DecimalFormat df = new DecimalFormat("0.##");
System.out.print(df.format(d));

输出:2.46

double d = 0.0001;
DecimalFormat df = new DecimalFormat("0.##");
System.out.print(df.format(d));

输出:0