Java:double:如何总是显示两位小数
我在我的项目中使用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