Java Double精准计算的坑

Java Double精准计算的坑


    public static void main(String[] args) {
        System.out.println(5053.6 * 100);
        BigDecimal bigDecimal1 = new BigDecimal(5053.6);
        BigDecimal bigDecimal2 = new BigDecimal(100);
        double d1 = bigDecimal1.multiply(bigDecimal2).doubleValue();
        System.out.println(d1);
        BigDecimal bigDecimal3 = new BigDecimal(5053.6+"");
        BigDecimal bigDecimal4 = new BigDecimal(100+"");
        double d2 = bigDecimal3.multiply(bigDecimal4).doubleValue();
        System.out.println(d2);
    }

505360.00000000006

505360.000000000060

505360.0

第一个计算结果是错误的
第二个计算结果也是错误的
只有第三个计算结果是正确

这是一个做电商应用常见得坑,可以做为面试题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容