Может ли кто-нибудь рекомендовать эффективный способ определить, является ли BigDecimal
целочисленным значением в математическом смысле?
В настоящее время у меня есть следующий код:
private boolean isIntegerValue(BigDecimal bd) {
boolean ret;
try {
bd.toBigIntegerExact();
ret = true;
} catch (ArithmeticException ex) {
ret = false;
}
return ret;
}
... но если это необходимо, вы можете избежать накладных расходов на создание объектов. Раньше я использовал bd.longValueExact()
, чтобы избежать создания объекта, если BigDecimal
использовал его компактное представление внутри, но, очевидно, потерпел бы неудачу, если значение было слишком большим, чтобы вписаться в длинный.
Любая помощь была оценена.