_065_Java_BigDecimal与DecimalFormat

//num--需要进行处理的数值
//scale--保留小数点后的位数
//roundingMode--保留小数点后几位采取舍入策略
public static double siSheWuRuByBigDecimal(double num,int scale,int roundingMode) {
		//在保留的位数中后面的零,BigDecimal不保留
		BigDecimal b = new BigDecimal(new Double(num).toString());
		return b.setScale(scale, roundingMode).doubleValue();
}

public static void main(String[] args) {
		String num = siSheWuRuByBigDecimal(212.05000,0,BigDecimal.ROUND_HALF_UP)+"";
		String num1 = siSheWuRuByBigDecimal(212.05000,1,BigDecimal.ROUND_HALF_UP)+"";
		String num2 = siSheWuRuByBigDecimal(212.05000,2,BigDecimal.ROUND_HALF_UP)+"";
		String num3 = siSheWuRuByBigDecimal(212.05000,3,BigDecimal.ROUND_HALF_UP)+"";
		String num4 = siSheWuRuByBigDecimal(212.05000,4,BigDecimal.ROUND_HALF_UP)+"";
		String num5 = siSheWuRuByBigDecimal(212.05001,5,BigDecimal.ROUND_HALF_UP)+"";
		String num6 = siSheWuRuByBigDecimal(212.0500001,6,BigDecimal.ROUND_HALF_UP)+"";
		System.out.println(num);
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
		System.out.println(num4);
		System.out.println(num5);
		System.out.println(num6);
}

运行结果如下:

由此可见,BigDecimal的setScale方法不会保留无效位的零,只会保留有效数字。

那如果在显示的时候一定要以保留要求的位数显示,那就可以使用DecimalFormat了。

//num--需要进行处理的数值
//scale--保留小数点后的位数
//roundingMode--保留小数点后几位采取舍入策略
public static double siSheWuRuByBigDecimal(double num,int scale,int roundingMode) {
		//在保留的位数中后面的零,BigDecimal不保留
		BigDecimal b = new BigDecimal(new Double(num).toString());
		return b.setScale(scale, roundingMode).doubleValue();
}

public static void main(String[] args) {
		String num = siSheWuRuByBigDecimal(212.05000,0,BigDecimal.ROUND_HALF_UP)+"";
		String num1 = siSheWuRuByBigDecimal(212.05000,1,BigDecimal.ROUND_HALF_UP)+"";
		String num2 = siSheWuRuByBigDecimal(212.05000,2,BigDecimal.ROUND_HALF_UP)+"";
		String num3 = siSheWuRuByBigDecimal(212.05000,3,BigDecimal.ROUND_HALF_UP)+"";
		String num4 = siSheWuRuByBigDecimal(212.05000,4,BigDecimal.ROUND_HALF_UP)+"";
		String num5 = siSheWuRuByBigDecimal(212.05001,5,BigDecimal.ROUND_HALF_UP)+"";
		String num6 = siSheWuRuByBigDecimal(212.0500001,6,BigDecimal.ROUND_HALF_UP)+"";
		System.out.println(num);
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
		System.out.println(num4);
		System.out.println(num5);
		System.out.println(num6);
		
		System.out.println();
		
		double num00 = siSheWuRuByBigDecimal(212.05000,0,BigDecimal.ROUND_HALF_UP);
		double num01 = siSheWuRuByBigDecimal(212.05000,1,BigDecimal.ROUND_HALF_UP);
		double num02 = siSheWuRuByBigDecimal(212.05000,2,BigDecimal.ROUND_HALF_UP);
		double num03 = siSheWuRuByBigDecimal(212.05000,3,BigDecimal.ROUND_HALF_UP);
		double num04 = siSheWuRuByBigDecimal(212.05000,4,BigDecimal.ROUND_HALF_UP);
		double num05 = siSheWuRuByBigDecimal(212.05001,5,BigDecimal.ROUND_HALF_UP);
		double num06 = siSheWuRuByBigDecimal(212.0500001,6,BigDecimal.ROUND_HALF_UP);
		
		DecimalFormat df = new DecimalFormat("###.0000000");
		String format00 = df.format(num00);
		String format01 = df.format(num01);
		String format02= df.format(num02);
		String format03 =df.format(num03);
		String format04 = df.format(num04);
		String format05 = df.format(num05);
		String format06 = df.format(num06);
		System.out.println(format00);
		System.out.println(format01);
		System.out.println(format02);
		System.out.println(format03);
		System.out.println(format04);
		System.out.println(format05);
		System.out.println(format06);
	}
	

输出如下所示,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值