经常有人说(例如,乔什·布洛赫(Josh Bloch)在“有效的Java”中),我们不应在财务计算中使用浮点类型,例如double
。那么,在给定年利率的情况下,我们如何计算月利率?
公式为:
monthly rate = (1 + annual rate)^(1/12) - 1
但是BigDecimal没有pow(BigDecimal)
方法,也没有nthRoot(int) method. So we can't call
rate.pow(1.0 / 12)nor
rate.nthroot(12)`,因为这些方法没有存在。如果我们这样做:
monthlyRate = BigDecimal.valueOf(Math.pow(1 + rate.doubleValue(), 1.0/12) - 1)
然后它违反了使用BigDecimal
的目的,以避免使用double
。