格式化双精度到2位小数不起作用
我想围绕这个双倍:
3.499999999999999
至:
3.50
我已经使用了这两种方法:
DecimalFormat df = new DecimalFormat("0.00"); double result = Double.valueOf(df.format(input)); System.out.println(answer);
和
public double round(double input) { int decimalPlace = 2; BigDecimal bd = new BigDecimal(input); bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP); return (bd.doubleValue()); }
但它继续印刷:
3.5
有人有解决方案吗? 因为我真的认为这应该有效。 谢谢你的帮助。
你的第一个解决方案非常非常接近。 这样做:
DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(input));
您的版本不起作用的原因是您将input
加倍,将其格式化为具有2dp的String
,但随后将其转换回double
。 System.out.println
然后按原样打印double
,没有特殊的小数位规则。
您可以使用可能更简单的printf格式。
System.out.printf("%.2f%n", 3.5);
版画
3.50
你试过用#
替换掉0
吗?
DecimalFormat df = new DecimalFormat(“#。##”); 的System.out.println(df.format(输入));
根据这里 ,如果数字不存在, #
将被解析为0