in src/main/java/org/apache/commons/jexl3/JexlArithmetic.java [2027:2057]
public BigDecimal toBigDecimal(final Object val) {
if (val instanceof BigDecimal) {
return roundBigDecimal((BigDecimal) val);
}
if (val instanceof Double) {
if (Double.isNaN((Double) val)) {
return BigDecimal.ZERO;
}
return roundBigDecimal(new BigDecimal(val.toString(), getMathContext()));
}
if (val instanceof Number) {
return roundBigDecimal(parseBigDecimal(val.toString()));
}
if (val instanceof Boolean) {
return BigDecimal.valueOf((boolean) val ? 1. : 0.);
}
if (val instanceof AtomicBoolean) {
return BigDecimal.valueOf(((AtomicBoolean) val).get() ? 1L : 0L);
}
if (val instanceof String) {
return roundBigDecimal(parseBigDecimal((String) val));
}
if (val instanceof Character) {
return new BigDecimal((Character) val);
}
if (val == null) {
return controlNullOperand(strict, BigDecimal.ZERO);
}
throw new CoercionException("BigDecimal coercion: "
+ val.getClass().getName() + ":(" + val + ")");
}