我是靠谱客的博主 孤独耳机,这篇文章主要介绍BigDecimal.valueof()和new BigDecimal()的区别,现在分享给大家,希望可以做个参考。

最近碰到一个bug,用金额判断大小,结果与预想不一致。

经过测试发现是new BigDecimal()的问题,这里做了个简单的测试。

@Test
    public void chaeTest() throws Exception{
        BigDecimal a = BigDecimal.valueOf(0.99);
        BigDecimal b = new BigDecimal(0.99);
        boolean c = a == b;
        boolean d = a.equals(b);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println("-------------");
    }
0.99
0.9899999999999999911182158029987476766109466552734375
false
false

结果发现new BigDecimal()会改变数值,导致判断出现问题。用BigDecimal.valueof()则不会。

最后

以上就是孤独耳机最近收集整理的关于BigDecimal.valueof()和new BigDecimal()的区别的全部内容,更多相关BigDecimal.valueof()和new内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部