【问题标题】:Set precision using decimalFormat error - Java使用decimalFormat错误设置精度 - Java
【发布时间】:2016-01-27 17:28:30
【问题描述】:

我第一次尝试使用 DecimalFormat Java 类,但遇到了一个奇怪的问题。我希望 125.295 舍入到 125.30。我认为格式应该自动包含 0,但也许我不正确。

double num = 125.295;
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.HALF_UP);
String str = df.format(num);
System.out.println(str); //this is yielding 125.3 instead of 125.30

请帮助并提前感谢您!

【问题讨论】:

  • 使用new DecimalFormat("#.00")

标签: java format double rounding


【解决方案1】:

DecimalFormat 类将“#”视为“隐藏尾随零”或将“0”视为“显示零”。根据 DecimalFormat 的 API:

0   Number  Yes Digit
#   Number  Yes Digit, zero shows as absent

因此,如果要显示尾随零,则应使用 DecimalFormat("#.00") 而不是 DecimalFormat("#.##")。

【讨论】:

    【解决方案2】:

    尝试像这样使用DecimalFormat

       double num = 125.295;
       DecimalFormat df = new DecimalFormat("###.00");
       System.out.println("sum (DecimalFormat) : " + df.format(num));
    

    输出:

       125.30
    

    【讨论】:

    • 在小数点前指定更多 # 不会改变任何内容。
    • @Andreas 现在效率更高了
    • 第二个例子的输出是125.3,这正是OP不想要的。
    • @Andreas ok andres 消除第二种可能性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多