Java:双精度:如何始终显示两个小数位

2022-09-01 14:56:32

我在项目中使用双精度值,并且我希望始终显示前两个小数位,即使它们是零。我使用这个函数进行舍入,如果我打印的值为3.47233322,它(正确)打印3.47。但是,例如,当我打印值 2 时,它打印的是 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!

有没有办法在不使用字符串的情况下做到这一点?

编辑:从您的回答(我感谢您)中,我知道我不清楚我正在搜索的内容(我对此感到抱歉):我知道如何使用您提出的解决方案在数字后打印两位数...我想要的是直接在双精度值中存储两位数!因此,当我做这样的事情时(其中d是我的双精度值,值为2),它打印2.00。System.out.println("" + d)

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


答案 1

您可以使用类似如下的内容:

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

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


答案 2

为此使用 :java.text.NumberFormat

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

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