3

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

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.568.56.

4

2 回答 2

1

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

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

尝试使用 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)
于 2013-11-05T09:10:40.967 回答