如何在java中格式化像0#.##这样的浮点数? [复制]

Posted

技术标签:

【中文标题】如何在java中格式化像0#.##这样的浮点数? [复制]【英文标题】:how to format a float like 0#.## in java? [duplicate] 【发布时间】: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

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于如何在java中格式化像0#.##这样的浮点数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将 VarChar 转换为具有不同文化格式的浮点数

java编程把任意输入的浮点数按小数点后2位输出格式输出

如何格式化具有最大小数位数且没有额外零填充的浮点数?

如何检查一个值是不是是javascript中的浮点数[重复]

MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数

将浮点数转换为 hh:mm 格式