看到这个问题的时候,如果你的第一反应就是double或是float, 那么恭喜你!你掉坑里了!
其实无论是double还是float在运算时都存在精度丢失的问题,虽然差值近似零,但是数据量多起来,积少成多,想想都恐怕,特别当今是大数据时代。银行这些对精度要求特别高的,更加不能忽略。其实java对财务这块有一个专门的数据类型BigDecimal,它有很多构造函数,但是唯独参数为String的构造函数才能计算出精确的数值 。下面就看代码吧

用参数Double构造出来的BigDecimal运算值失去精度,应该是跟参数为Double有关的。
其实BigDecimal更像一个工具类,加减乘除的都有自己的函数,有兴趣的你可以自己再自己深入研究一下。
本文揭示了在Java中使用double和float进行运算时存在的精度丢失问题,特别是在大数据背景下,累积误差不容忽视。针对高精度需求场景,如财务计算,推荐使用BigDecimal类,特别是通过String参数构造,以确保数值计算的准确性。
1345

被折叠的 条评论
为什么被折叠?



