比较 BigDecimal 值和 double 值等于小数点后两位

use*_*969 4 java double bigdecimal

我正在使用返回双精度值的 API。我需要将该值与 BigDecimal 值进行比较,以便相等于两位小数。

我应该将 BigDecimal 转换为 double 然后比较

Math.abs(myBigDecimal.doubleValue() - apiDouble) >= .01
Run Code Online (Sandbox Code Playgroud)

或者这种方法有问题吗?也许我应该将 double 转换为 BigDecimal 然后进行比较?

Ste*_*235 5

不可以。尽管 IEEE double 具有保护位,但它不能准确表示十进制值。使用舍入将 double 转换为 BigDecimal,然后使用 compareTo()。请注意,equals() 考虑了小数位,因此 compareTo() 更安全。您可能还需要舍入 BigDecimal。