Было бы также работать над тем, чтобы обработать добавление для вас. Теперь я не знаю, как это повлияет на производительность, но я предполагаю, что это будет меньше, чем использование BigDecimal.
public static Number addNumbers(Number a, Number b) {
if(a instanceof Double || b instanceof Double) {
return new Double(a.doubleValue() + b.doubleValue());
} else if(a instanceof Float || b instanceof Float) {
return new Float(a.floatValue() + b.floatValue());
} else if(a instanceof Long || b instanceof Long) {
return new Long(a.longValue() + b.longValue());
} else {
return new Integer(a.intValue() + b.intValue());
}
}