DecimalFormat可以按照需要格式化数字,下面简单介绍一下几种使用。其中自己也踏踏实实踩了坑,谨此记录。

保留位数设置
public class DecimalUtils {

    //保留2位,不足补0
private static final DecimalFormat df_fill_zero = new DecimalFormat("00.00");
//保留2位,不足保留原位数
private static final DecimalFormat df_fill_null = new DecimalFormat("##.##"); public static void main (String args[]) {
System.out.println(df_fill_zero.format(1.2)); //01.20 不足2位补0
System.out.println(df_fill_null.format(1.2)); //1.2 不足2位保留原数位 System.out.println(df_fill_zero.format(1.224)); //01.22 超出2位截断(舍入模式后面再说)
System.out.println(df_fill_null.format(1.224)); //1.22 超出2位截断(舍入模式后面再说) System.out.println(df_fill_zero.format(123.22)); //123.22
System.out.println(df_fill_null.format(123.22)); //123.22
}
}

运行结果:

01.20
1.2
01.22
1.22
123.22
123.22

舍入模式

默认舍入模式

public class FormatDefault {
//保留3位,不足保留原位数
private static final DecimalFormat df_t = new DecimalFormat("#.###"); public static void main (String args[]) {
//默认舍入模式(RoundingMode.HALF_EVEN)
System.out.println(df_t.format(1234.2224)); //1234.222
System.out.println(df_t.format(1234.2226)); //1234.223 System.out.println(df_t.format(1234.2225)); //1234.223 最后一位偶数,舍入
System.out.println(df_t.format(1234.2235)); //1234.223 最后一位奇数,舍去
}
}

四舍五入模式

public class FormatHalfUp {

    /***
* 最多保存3位小数,如果number少于3位则保留原小数位数,如果多于3位则四舍五入保留3位小数
*/
public static String formatHalfUp(double number) {
DecimalFormat df = new DecimalFormat("#.###");
df.setRoundingMode(RoundingMode.HALF_UP);
return df.format(BigDecimal.valueOf(number)); //防止精度丢失,数字类型用BigDecimal
} public static void main (String args[]) {
//四舍五入舍入模式(RoundingMode.HALF_UP)
System.out.println(formatHalfUp(1234.2224)); //1234.222
System.out.println(formatHalfUp(1234.2226)); //1234.223 System.out.println(formatHalfUp(1234.2225)); //1234.223
System.out.println(formatHalfUp(1234.2235)); //1234.224
}
}

05-22 13:51