Groovy 如何对数组中的所有数字求和
我有一个输出以下内容的数组:Groovy 如何对数组中的所有数字求和,groovy,Groovy,我有一个输出以下内容的数组: charges = [5.00, 26.00, 8.00, 4.00, 4.00, -8.00, 54.00, 52.48] 当我尝试使用以下方法执行求和时: charges.sum() 它给了我: 5.0026.008.004.004.00-8.0054.0052.48 我假设我需要将它从字符串转换为浮点,所以我做了: Float.valueOf((String) charges.sum()) 它给了我一个错误,表示“多个点” 我的问题是如何将所有这些数字
charges = [5.00, 26.00, 8.00, 4.00, 4.00, -8.00, 54.00, 52.48]
当我尝试使用以下方法执行求和时:
charges.sum()
它给了我:
5.0026.008.004.004.00-8.0054.0052.48
我假设我需要将它从字符串转换为浮点,所以我做了:
Float.valueOf((String) charges.sum())
它给了我一个错误,表示“多个点”
我的问题是如何将所有这些数字相加?您必须删除强制转换字符串
Float.valueOf(charges.sum())
不清楚列表中有什么,似乎列表中的条目实际上是字符串,因为sum将它们连接在一起,或者打印字符串值的东西有一个toString方法,该方法返回一个显示值的字符串,因此您认为它是数字,即使它不是。它们肯定不是数字,因此在求和之前将它们转换为数字类型:
charges.collect { new BigDecimal(it.toString()) }.sum()
您的代码所做的是将字符串值连接在一起,然后将其转换为数字类型。如果您的列表实际上是由字符串组成的,则可以使用sum的闭包形式快速进行转换
charges.sum { it.toBigDecimal() }