我必须计算一些浮点变量,而我的同事建议我使用BigDecimal
而不是,double
因为这样会更精确。但是我想知道它是什么以及如何最大程度地利用它BigDecimal
?
A BigDecimal
是表示数字的精确方法。A Double
具有一定的精度。由于幅值之差太大,求和时使用不同倍数(例如d1=1000.0
和d2=0.001
)的双精度可能会导致0.001
它们一起下降。有了BigDecimal
这不会发生。
的缺点BigDecimal
是,它是较慢的,和它有点更难以程序算法的方式(由于+ - *和/
不被过载)。
如果你要花钱,或必须精打细算,请使用BigDecimal
。否则Doubles
往往就足够好了。
我确实建议阅读javadoc,BigDecimal
因为它们的解释要比我在这里做的要好:)