【问题标题】:how to format a float like 0#.## in java? [duplicate]如何在java中格式化像0#.##这样的浮点数? [复制]
【发布时间】:2013-11-05 09:07:58
【问题描述】:

我从用户那里得到一个输入。我想以这种格式打印它:

0#.##

##.##

如何在 java 中做到这一点?

今天我正在使用:

padWithZeroRightToPeriod(product.formats[index],Float.parseFloat(currentPrice));

private String padWithZeroRightToPeriod(String serverFormat, float unformattedNumber) {
  int nDigits = getNumberOfDigitsAfterPeriod(serverFormat);
  String floatingFormat = "%4." + nDigits + "f";
  String formattedPrice = String.format(floatingFormat, unformattedNumber);

  return formattedPrice
}

但它会将08.56 转换为8.56

【问题讨论】:

    标签: java string formatting


    【解决方案1】:

    两位小数,至少两位整数,前导零:

    String floatingFormat = "%05.2f";
    
    • 0 用零而不是空格填充字符串。
    • 5 是最小总字段宽度,包括整数、小数和小数点部分。
    • 2 是要打印的确切小数位数。

    【讨论】:

      【解决方案2】:

      尝试使用 DecimalFormatter

              float f= 3.44f;                 
              DecimalFormat df = new DecimalFormat("00.##");    
              System.out.println("formatted  value::"+ df.format(f));
      

      ================================================ ================================ 更新了你的功能

      private static String padWithZeroRightToPeriod(String serverFormat, float unformattedNumber) {
              DecimalFormat df = new DecimalFormat(serverFormat);    
              return df.format(unformattedNumber);
          }
      

      调用函数

      padWithZeroRightToPeriod("00.##",3.44f)
      

      【讨论】:

        猜你喜欢
        • 2016-01-02
        • 2018-10-28
        • 1970-01-01
        • 2010-10-14
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 2013-04-19
        相关资源
        最近更新 更多