如何在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#.##这样的浮点数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何检查一个值是不是是javascript中的浮点数[重复]