如何在java中格式化一个像0#。##的浮点数?

时间:2013-11-05 09:07:58

标签: java string formatting

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试使用DecimalFormat

        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)