Use BigDecimal to resolve overflow