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

我在我的项目中使用double值,我想总是显示前两位小数,即使它们是零。 我使用此函数进行舍入,如果我打印的值是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!

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

谢谢!

编辑:从你的答案(我感谢你)我明白我不清楚我在搜索什么(我很抱歉):我知道如何使用解决方案在数字后打印两位数建议…我想要的是直接存储两位数的双值! 所以当我做类似这样的事情时, System.out.println("" + d) (其中d是我的双倍值2)它打印2.00。

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

你可以使用这样的东西:

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

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

使用java.text.NumberFormat

 NumberFormat nf= NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); nf.setMinimumFractionDigits(2); nf.setRoundingMode(RoundingMode.HALF_UP); System.out.print(nf.format(decimalNumber)); 

你可以这样做:

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

DecimalFormat是最简单的选择:

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

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

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

你可以使用这样的东西

如果你想在答案中保留0:那么使用(0.00)格式为String

 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