Android :关于小数相加出现很多位的 BigDecimal 也会有时不靠谱原因

    BigDecimal

                BigDecimal bigDecimal1= new BigDecimal(0.0);
		BigDecimal bigDecimal2= new BigDecimal(1.001);
		BigDecimal bigDecimal3= new BigDecimal("0.0");
		BigDecimal bigDecimal4= new BigDecimal("1.001");
		
		for (int i = 0; i <5; i++) {
			bigDecimal1 = bigDecimal1.add(bigDecimal2);
			System.out.println(bigDecimal1);
		}
		
		System.out.println("---------------------------");
		for (int i = 0; i <5; i++) {
			bigDecimal3 = bigDecimal3.add(bigDecimal4);
			System.out.println(bigDecimal3);
		}

输出结果:

1.000999999999999889865875957184471189975738525390625
2.001999999999999779731751914368942379951477050781250
3.002999999999999669597627871553413569927215576171875
4.003999999999999559463503828737884759902954101562500
5.004999999999999449329379785922355949878692626953125
---------------------------
1.001
2.002
3.003
4.004
5.005


可以明显看出

bigDecimal1 不正常  <pre name="code" class="java">bigDecimal3  正常
就是当我们相加的时候 最好new BigDecimal(字符串)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值