private boolean isIntegerValue(BigDecimal bd) {
return bd.stripTrailingZeros().scale() <= 0;
}
2、 toBigIntegerExact
private boolean isIntegerValue(BigDecimal bd) {
boolean ret;
try {
bd.toBigIntegerExact();
ret = true;
} catch (ArithmeticException ex) {
ret = false;
}
return ret;
}
3、 将数字除以1并检查余数。 除以1时,任何整数应始终具有0的余数。
public boolean isWholeNumber(BigDecimal number) {
return number.remainder(BigDecimal.ONE).compareTo(BigDecimal.ZERO) == 0;
}
4、从Java 8开始,stripTrailingZeroes()现在占零
BigDecimal stripTrailingZeros不适用于零
private boolean isIntegerValue(BigDecimal bd) {
return bd.stripTrailingZeros().scale() <= 0;
}
5、scale()
和stripTrailingZeros()
解决方案你应该注意零。 零总是一个整数,无论它有多大的规模, stripTrailingZeros()
不会改变零BigDecimal的规模
private boolean isIntegerValue(BigDecimal bd) {
return bd.signum() == 0 || bd.scale() <= 0 || bd.stripTrailingZeros().scale() <= 0;
}
6、
public static boolean isIntegerValue(BigDecimal bd){
return bd.remainder(new BigDecimal("1")).compareTo(BigDecimal.ZERO) == 0;
}
7、
public static boolean isWhole(BigDecimal bigDecimal) {
return bigDecimal.setScale(0, RoundingMode.HALF_UP).compareTo(bigDecimal) == 0;
}