0.1+0.2==0.3返回false的原因

December 13, 2019 · 开发 · 432次阅读

这个问题应该是基础中的基础,众所周知,这是一个不可避免的浮点数精度丢失问题,同十进制一样,二进制中也会存在无限循环小数,而计算机对浮点数的表示通常是用 32 或 64 位的二进制,这使得在二进制的表达上必须采用“截断”的手段丢掉一些二进制位

    @Test
    public strictfp void test() {
        System.out.println(0.1f + 0.2f == 0.3f);
        System.out.println(0.1 + 0.2 == 0.3);
    }

返回结果

true
false

标签:none

最后编辑于:2019/12/13 16:18

添加新评论

控制面板