Java中double数据计算,小数点后出现异常
展开全部
因为浮点数本来就是不精确存储的。
double占8字节,也就是64位。比如0.1这个小数,虽然位数不多,但是按照java存浮点数的规则,并转成二进制的时候,64位是无法精确表示0.1的。
所以有你图中的情况。所以System.out.println(0.1+0.2==0.3)为false。
如果要精确表示小数,可以用BigDecimal。
BigDecimal a1 = new BigDecimal("6549.51");
BigDecimal a2 = new BigDecimal("17890.69");
BigDecimal a4 = a1.add(a2);
System.out.println(a4);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询