双十进制与大十进制?

2022-08-31 04:43:22

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


答案 1

A 是表示数字的精确方式。A 具有一定的精度。使用各种大小的双精度(例如和)可能会导致在求和时完全丢弃,因为大小差异如此之大。这样就不会发生。BigDecimalDoubled1=1000.0d2=0.0010.001BigDecimal

缺点是它的速度较慢,并且以这种方式对算法进行编程有点困难(由于并且没有过载)。BigDecimal+-*/

如果您正在与金钱打交道,或者精度是必须的,请使用.否则往往足够好。BigDecimalDoubles

我确实建议阅读javadoc,因为它们确实比我在这里更好地解释了事情:)BigDecimal


答案 2

我的英语不好,所以我只在这里写一个简单的例子。

double a = 0.02;
double b = 0.03;
double c = b - a;
System.out.println(c);

BigDecimal _a = new BigDecimal("0.02");
BigDecimal _b = new BigDecimal("0.03");
BigDecimal _c = _b.subtract(_a);
System.out.println(_c);

程序输出:

0.009999999999999998
0.01

还有人想使用双倍吗?;)