【问题标题】:Java strange rounding with DecimalFormat使用 DecimalFormat 进行 Java 奇怪的舍入
【发布时间】:2015-05-26 12:24:59
【问题描述】:
double number = Scanner.nextDouble();    
DecimalFormat df = new DecimalFormat("#.#");
        System.out.print (df.format(number));

我已经尝试将我的数字四舍五入到小数点后 1 位,但在没有小数的情况下,它似乎四舍五入到整数值(例如 2.0 将显示为 2)。我想要 2.0 以及任何其他输入数字以小数点后 1 位显示。此外,当 DecimalFormat 将负数舍入为 0 时,它会将其变为 -0。我该如何解决这些问题?

【问题讨论】:

标签: java


【解决方案1】:

使用“0.0”作为格式字符串。 # 表示数字,如果为零,则为空白,这就是您所看到的。

要摆脱标志,请查看this answer

【讨论】:

  • 谢谢,它现在为 0 返回 0.0,但我仍然有一个问题,它现在将接近 0 的负数四舍五入到 -0.0:/
  • 我已添加了答案链接 - 希望对您有所帮助。
【解决方案2】:

输出没有什么奇怪的。格式不符合您的要求。

DecimalFormat 中,# 只会在有意义的情况下输出指定小数位的字符。所以 10.00 就是 10。如果你想让小数位很重要,你需要使用0

new DecimalFormat("#.0");

此示例输出为:

0.11 - .1
10.00 - 10.0
10.4545 - 10.5
.00 - .0
455 - 455.0

如果您也想要小数点前的 0,那么您可以使用 #0.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多