我从用户那里得到了一个输入。我想以这种格式打印它:
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
。
答案 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)