handle BigDecimal errors

BigDecimal is pretty poor at math too, try both BigDecimal and Double
before giving up.