一,保留两位小数常用的几种方法
1,使用 java.util.Formatter 类
public static String format2(double value) { /* * %.2f % 表示 小数点前任意位数 2 表示两位小数 格式后的结果为 f 表示浮点型 */ return new Formatter().format("%.2f", value).toString(); }
2,使用String的format方法
public static String format2(double value) { return String.format("%.2f", value).toString(); }
3,用DecimalFormat的format方法;
double f = 111231.5585; DecimalFormat df = new DecimalFormat("#.00"); System.out.println(df.format(f));
说明:
.00:四舍五入保留两位小数。满足2时,整数位不显示
#.00:四舍五入保留两位小数。满足2时,整数位不显示
0.00:四舍五入保留两位小数。不够位数则补0
#.##:四舍五入保留两位小数。不够位数时不处理
%.2f:四舍五入保留两位小数。不够位数则补0
BigDecimal :四舍五入保留两位小数。不够位数时不处理
NumberFormat:四舍五入保留两位小数。不够位数时不处理
解释一下"0"和"#"的区别:
0:
数字少了,会补“0”,小数和整数都会补0;
数字多了,做切割,只切小数的末尾,不切整数位;
#:
数字少了,则不处理;
数字多了,做切割,只切小数的末尾,不切整数位;
例如:
有两类(四种)情况:
1.a>1
2. 0<a<1
3. 待转换的数据,其小数长度大于指定保留的位数(eg:a = 12.235534,保留2位)
4.待转换的数据,其小数长度小于指定保留的位数(eg:a = 12.2,保留2位)
double a = 12.235534; //法1 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat = new DecimalFormat(".00"); System.out.println(".00:" + decimalFormat.format(a)); //法2 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat2 = new DecimalFormat("#.00"); System.out.println("#.00:" + decimalFormat2.format(a)); //法3 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat3 = new DecimalFormat("0.00"); System.out.println("0.00:" + decimalFormat3.format(a)); //法4 四舍五入保留两位小数,可以增删小数点后#的个数来修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 DecimalFormat decimalFormat4 = new DecimalFormat("#.##"); System.out.println("#.##:" + decimalFormat4.format(a)); //法5 四舍五入保留两位小数,可以修改f前的数字修改需要保留的小数个数 System.out.println("%.2f:" + String.format("%.2f", a)); //法6 四舍五入保留两位小数,可以修改setScale内的第一个参数数字修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 BigDecimal b = new BigDecimal(a); double d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("BigDecimal:" + d); //法7 四舍五入保留两位小数,可以修改setMaximumFractionDigits数字修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 NumberFormat f = NumberFormat.getNumberInstance(); f.setMaximumFractionDigits(2); System.out.println("NumberFormat:" + f.format(a));
1.假设已有待转换数据:double a = 12.235534 满足条件1、3
结果如下:
2.假设已有待转换数据:double a = 0.235534 满足条件2、3
同样执行上面7种方式,你就会发现不同
结果如下:
3.假设已有待转换数据:double a = 0.2 满足条件2、4
同样执行上面7种方式,你就会发现不同
结果如下:
4.假设已有待转换数据:double a = 12.2 满足条件1、4
同样执行上面7种方式,你就会发现不同
结果如下:
标签:四舍五入,format,double,保留,小数点,相关,DecimalFormat,小数 From: https://www.cnblogs.com/zhangliang88/p/17114841.html