我必须计算一些浮点变量,我的同事建议我使用BigDecimal
而不是double
,因为它会更精确.但我想知道它是什么,以及如何充分利用BigDecimal
?
我必须计算一些浮点变量,我的同事建议我使用BigDecimal
而不是double
,因为它会更精确.但我想知道它是什么,以及如何充分利用BigDecimal
?
BigDecimal
是表示数字的精确方式.Double
有一定的精度.使用不同震级的双倍(比如d1=1000.0
和d2=0.001
)可能会导致0.001
在求和时一起下降,因为震级差异太大.如果是BigDecimal
,这就不会发生.
BigDecimal
的缺点是速度较慢,而且用这种方式编程算法有点困难(因为+
-
*
和/
没有过载).
如果你在和钱打交道,或者精准是必须的,使用BigDecimal
.否则Doubles
就足够好了.
我确实建议阅读BigDecimal
中的javadoc篇,因为它们确实比我在这里解释得更好:)