【问题标题】:Java formatting decimals to 2 digits precisionJava 将小数格式化为 2 位精度
【发布时间】:2016-11-30 15:03:33
【问题描述】:

我现在正在这样做

DecimalFormat df = new DecimalFormat("#.##");
//usage: df.format(someDouble);

但我不知道这是否是“四舍五入”显示双至 2 位小数的正确方法。即使小数点左边的位数> 1,这也能工作吗?

【问题讨论】:

  • 你测试过代码吗?输出是什么?
  • 我暂时没有办法测试代码
  • 那么代码有什么问题呢?你是在问这是否是这样做的方法?
  • 专业提示:Ideone。如果您可以访问 SO,您就可以测试代码(或至少像这样的微不足道的代码)。
  • @Ironcache 哦,亲爱的!我试试看,谢谢

标签: java format double precision decimalformat


【解决方案1】:

你应该使用:

DecimalFormat df = new DecimalFormat("#.00");

DecimalFormat df = new DecimalFormat("#.##"); 表示这些小数位是可选的。在1.21.0 申请时,您可以看到区别。

--Documentation

【讨论】:

  • 如果小数点左边的位数大于1怎么办?因为我不知道为什么它是 #.00 而不是 .00
  • @KaliMa 没关系!整数不四舍五入:)
  • @KaliMa 你为什么不试试看会发生什么?
  • @Andreas 我会,但我目前没有办法测试我的代码
  • @KaliMa 你能澄清你最后的评论吗?
【解决方案2】:

要回答有关四舍五入的问题,documentation 告诉它:

四舍五入

DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。

所以这取决于您使用the setter 设置您想要的RoundingMode

public void setRoundingMode(RoundingMode roundingMode)

【讨论】:

    【解决方案3】:

    即使小数点左边的位数> 1,这也能工作吗?

    会的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多