保留小数点相关问题
一,保留两位小数常用的几种方法
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种方式,你就会发现不同
结果如下:

每天学习一点点,你就进步一点点。

浙公网安备 33010602011771号