首页 > 解决方案 > BigDecimal 月利率

问题描述

人们经常说(例如,Josh Bloch 在“Effective Java”中)我们不应该使用浮点类型,例如double,来进行财务计算。那么,在给定年利率的情况下,我们如何计算月利率呢?

公式为:

monthly rate = (1 + annual rate)^(1/12) - 1

但是 BigDecimal 没有pow(BigDecimal)方法,也没有nthRoot(int) method. So we can't callrate.pow(1.0/12) norrate.nthroot(12)`,因为这些方法不存在。如果我们这样做:

monthlyRate = BigDecimal.valueOf(Math.pow(1 + rate.doubleValue(), 1.0/12) - 1)

那么它就违背了使用的目的,BigDecimal以避免使用double.

标签: javabigdecimal

解决方案


推荐阅读