【1】String.format
使用的是 String
类中的 format
方法:
🎈public static String format(String format, Object... args)
- format - 格式字符串。
- args - 格式字符串中由格式说明符引用的参数。
【案例】
double arg1 = 3.1415926;
double arg2 = 4.2345678;
double arg3 = 1.11;
System.out.println(String.format("%.2f", arg1)); //保留3位小数
System.out.println(String.format("%.4f", arg2)); //保留4位小数
System.out.println(String.format("%.6f", arg3)); //保留6位小数
//当参数小数位数不足时会在后面补 0
【2】DecimalFormat
使用 DecimalFormat
给定模式字符串的构造方法,创建一个 DecimalFormat
对象,通过对象调用 format
方式,传入参数进行格式化:
需要导入包 import java.text.DecimalFormat;
🎈public DecimalFormat(String pattern)
- pattern - 一个非本地化的模式字符串。
DecimalFormat
对象调用的format
方法:
【案例】
double arg1 = 3.1415926;
double arg2 = 4.2345678;
double arg3 = 1.11;
DecimalFormat df = new DecimalFormat("0.0000"); //保留4位小数
System.out.println(df.format(arg1));
System.out.println(df.format(arg2));
System.out.println(df.format(arg3)); //也会补 0
【3】BigDecimal
使用 BigDecimal
的构造方法创建一个 BigDecimal
对象,然后通过该对象调用 setScale
方法取得格式化的值:
需要导入包 import java.math.BigDecimal;
🎈 public BigDecimal(double val)
- 将 double 转换为 BigDecimal
🎈public BigDecimal setScale(int newScale, int roundingMode)
- newScale:代表保留小数点后几位数
- roundingMode:
BigDecimal.ROUND_HALF_UP 四舍五入
BigDecimal.ROUND_DOWN 直接删除多余小数位
【案例】
double f = 111231.5585;
BigDecimal bg = new BigDecimal(f);
//将 BigDecimal 值转为 double 接收
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double f2 = bg.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
System.out.println(f2); //不补 0