美文网首页
Double类型运算的精度问题

Double类型运算的精度问题

作者: 木木点 | 来源:发表于2020-03-30 01:12 被阅读0次
    GkbxOK.png

    浮点数值不适用于无法接受舍入误差的计算中。

    舍入误差的主要原因在于浮点数值采用二进制系统表示,而二进制系统中无法精确地表示分数1/10,这就像十进制无法精确的表示分数1/3一样。

    所以如果数值计算中不允许有任何舍入误差,就应该使用BigDecimal类。

    二进制系统中无法精确地表示分数1/10何解?

    1/10换算成二进制为1/1010,结果无限循环的小数,所以二进制无法用有限的位数来表示0.1.

    二进制能用有限的位数表示的一些数,比如0.5, 0.25等。

    0.5, 0.25换算成二进制为101/1010,11001/1100100,所以二进制能用有限的位数来表示0.5, 0.25等。

    十进制无法精确的表示分数1/3同理。

    PS:float同样存在这个问题

    使用BigDecimal类解决

    GkOfSA.png

    相关文章

      网友评论

          本文标题:Double类型运算的精度问题

          本文链接:https://www.haomeiwen.com/subject/wntmuhtx.html