Iterable提供了一个sumByDouble方法,但是对于BigDecimal类型的Iterable运算的结果实在是差强人意,看下面这段代码的运行结果:
var list = listOf<BigDecimal>(BigDecimal(10.21.toString()), BigDecimal(8.21.toString()), BigDecimal(12.21.toString()))
var repaymentAmount = BigDecimal(list.sumByDouble { it.toDouble() })
// var repaymentAmount = list.sumByBigDecimal { it }
println("repaymentAmount == $repaymentAmount")
输出的是repaymentAmount == 30.63000000000000255795384873636066913604736328125
仿照sumByDouble方法扩展了一个新的方法sumByBigDecimal,做了部分修改,具体如下