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() }