【问题标题】:Float values which ends with '0' cant be denoted by two decimal points以“0”结尾的浮点值不能用两位小数表示
【发布时间】:2019-11-27 10:58:55
【问题描述】:

我做了一个数字格式来表示货币值,如下所示:

 private static DecimalFormat decimalFormat = new DecimalFormat("0.00");

 List<String> paidAmounts = new ArrayList<>();

  for (Invoice invoice : invoices) {
    paidAmounts.add(String.valueOf
    ("$"+Formatter.currencyDecimalFormat(invoice.getAmount())));
   }

   public static Float currencyDecimalFormat(int value) {
    return Float.valueOf(decimalFormat.format((float) value / 100));
}

发票类:

    private int amount;

    public int getAmount() {
    return amount;
  }

但以 '0' 结尾的值未格式化为所需格式。

$18.5
$16.8
$105.59

如何改正?

【问题讨论】:

    标签: java currency number-formatting formatter


    【解决方案1】:

    您的 Float.valueOf 正在重新格式化 float 以删除尾随 0,因为 float 不能容纳尾随 0。.format 返回的 String 可以。如果您尝试打印出来:

    decimalFormat.format((float) value / 100)

    浮点数将正确打印。删除对.valueOf 的调用,并从currencyDecimalFormat 中返回String

    public static String currencyDecimalFormat(int value) {
        return decimalFormat.format((float) value / 100);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 2010-10-08
      • 2023-03-05
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2019-03-16
      • 2020-06-29
      • 2011-09-03
      相关资源
      最近更新 更多