in src/main/java/org/apache/commons/jexl3/JexlArithmetic.java [2083:2118]
public BigInteger toBigInteger(final Object val) {
if (val instanceof BigInteger) {
return (BigInteger) val;
}
if (val instanceof Double) {
final Double dval = (Double) val;
if (Double.isNaN(dval)) {
return BigInteger.ZERO;
}
return BigInteger.valueOf(dval.longValue());
}
if (val instanceof BigDecimal) {
return ((BigDecimal) val).toBigInteger();
}
if (val instanceof Number) {
return BigInteger.valueOf(((Number) val).longValue());
}
if (val instanceof Boolean) {
return BigInteger.valueOf((boolean) val ? 1L : 0L);
}
if (val instanceof AtomicBoolean) {
return BigInteger.valueOf(((AtomicBoolean) val).get() ? 1L : 0L);
}
if (val instanceof String) {
return parseBigInteger((String) val);
}
if (val instanceof Character) {
final int i = (Character) val;
return BigInteger.valueOf(i);
}
if (val == null) {
return controlNullOperand(strict, BigInteger.ZERO);
}
throw new CoercionException("BigInteger coercion: "
+ val.getClass().getName() + ":(" + val + ")");
}