NumberFormat 、DecimalFormat格式化BigDecimal
1.NumberFormat自定义保留n位小数
public String fmtMicrometerReservedDecimals(BigDecimal decimal, int digits) {
String valString = "0";
if (Objects.isNull(decimal) || digits <= 0) {
return valString;
}
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setGroupingUsed(true);
numberFormat.setMaximumFractionDigits(digits);
numberFormat.setMinimumFractionDigits(digits);
numberFormat.setRoundingMode(RoundingMode.HALF_UP);
return numberFormat.format(decimal);
}
2.DecimalFormat 自定义保留n位小数
public String fmtMicrometerReservedDecimals2(BigDecimal decimal, int digits) {
String valString = "0";
if (Objects.isNull(decimal) || digits <= 0) {
return valString;
}
DecimalFormat df = null;
String format = "##,##0.";
for (int i = 0; i < digits; i++) {
format += "0";
}
df = new DecimalFormat(format);
df.setRoundingMode(RoundingMode.HALF_UP);
valString = df.format(decimal);
RoundingMode roundingMode = df.getRoundingMode();
System.out.println("roundingMode:" + roundingMode);
return valString;
}
3.NumberFormat格式化数字为百分比,并保留n位小数
public String fmtPercent(BigDecimal decimal, int digits) {
NumberFormat percentFormat = NumberFormat.getPercentInstance();
if (Objects.isNull(decimal) || digits < 0) {
return percentFormat.format(BigDecimal.ZERO);
}
percentFormat.setGroupingUsed(false);
percentFormat.setMaximumFractionDigits(digits);
percentFormat.setMinimumFractionDigits(digits);
percentFormat.setRoundingMode(RoundingMode.HALF_UP);
return percentFormat.format(decimal);
}
4.DecimalFormat格式化数字为百分比,并保留n位小数
public String fmtPercent2(BigDecimal decimal, int digits) {
String valString = "0";
if (Objects.isNull(decimal) || digits <= 0) {
return new DecimalFormat("#0.00%").format(valString);
}
DecimalFormat df = null;
String format = "#0.";
for (int i = 0; i < digits; i++) {
format += "0";
}
format += "%";
df = new DecimalFormat(format);
df.setRoundingMode(RoundingMode.HALF_UP);
return df.format(decimal);
}