DecimalFormat数字格式化
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 } }