double类型的精度问题【计算时有误差】。 (0.1 * 0.1 , 1.0 - 0.9)

来源:互联网 发布:大华网络视频解码器 编辑:程序博客网 时间:2024/05/22 03:34

如果你认为 if ( 0.1*0.1 ==  0.01 ) 的结果是true


那你就错了!!


以下计算得到的结果:

System.out.println(0.1*0.1);System.out.println(1.0-0.9);

0.010000000000000002

0.09999999999999998


原因:

浮点数数值采用二进制表示,在二进制系统之无法精确表示1/10,就像十进制无法表示1/3一样,

这样就产生了误差,如果想尽量避免误差,就应用BigDecimal类来运算,尤其是在金融领域.

原创粉丝点击