Check if BigDecimal variable is zero in Java (BigDecimal == 0)
From the Javadocs, A BigDecimal
consists of an arbitrary precision integer unscaled value and a 32-bit integer scale. If zero or positive, the scale is the number of digits to the right of the decimal point. If negative, the unscaled value of the number is multiplied by ten to the power of the negation of the scale. The value of the number represented by the BigDecimal
is therefore (unscaledValue × 10-scale). Hence, BigDecimal isn’t a suitable for just numeric comparison. The reason you can’t use BigDecimal#equals()
is that it takes scale into consideration:
Advertisements
To compare a BigDecimal variable with zero, try the following code snippets.
Method 1 : Using compareTo method
if (orderPrice.compareTo(BigDecimal.ZERO) == 0)
Advertisements
Method 1 : Using signum method
if (orderPrice.signum() == 0) { return true; }