我必须计算一些浮点变量,我的同事建议我使用BigDecimal而不是double,因为它会更精确.但我想知道它是什么,以及如何充分利用BigDecimal

推荐答案

BigDecimal是表示数字的精确方式.Double有一定的精度.使用不同震级的双倍(比如d1=1000.0d2=0.001)可能会导致0.001在求和时一起下降,因为震级差异太大.如果是BigDecimal,这就不会发生.

BigDecimal的缺点是速度较慢,而且用这种方式编程算法有点困难(因为+ - */没有过载).

如果你在和钱打交道,或者精准是必须的,使用BigDecimal.否则Doubles就足够好了.

我确实建议阅读BigDecimal中的javadoc篇,因为它们确实比我在这里解释得更好:)

Java相关问答推荐

Java -使用空比较或instanceof?

了解Android Studio中的调试器输出

使用@MappdSuperClass扩展ParentClass&Won t继承ParentClass属性

在模拟超类中设置非setter属性的值

关于泛型的覆盖规则

如何判断一个矩阵是否为有框矩阵?

连接Quarkus中的两个异步操作

内存中的H2修剪尾随空格

无法了解Java线程所消耗的时间

从Spring5迁移到Spring6:无法在雅加达包中找到类

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

如何在Spring Java中从数据库列中获取JSON中的具体数据

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

在打开搜索结果时,如何让Eclipse打开整个文件?

如何使用Java ZoneID的区域设置?

获取月份';s在java中非UTC时区的开始时间和结束时间

始终使用Spring Boot连接mongodb上的测试数据库

在输入端没有可行的替代方案'; Select *';

在JSON上获取反斜杠

如何使用java区分以下结果