diff --git a/src/main/java/org/ssssssss/script/functions/StreamExtension.java b/src/main/java/org/ssssssss/script/functions/StreamExtension.java index 3750ad20d7779f2835f3a40ab39441d5c8ed1156..f0010f92824ea5d8051a02b1ef8c0b4ce9b2b477 100644 --- a/src/main/java/org/ssssssss/script/functions/StreamExtension.java +++ b/src/main/java/org/ssssssss/script/functions/StreamExtension.java @@ -7,6 +7,7 @@ import org.ssssssss.script.parsing.ast.literal.BooleanLiteral; import org.ssssssss.script.reflection.JavaReflection; import java.lang.reflect.Array; +import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -386,8 +387,8 @@ public class StreamExtension { public Number sum(Object target) { return arrayLikeToList(target).stream() .filter(value -> value instanceof Number) - .mapToDouble(value -> ((Number) value).doubleValue()) - .sum(); + .map(x -> new BigDecimal(String.valueOf(x))) + .reduce(BigDecimal.ZERO, BigDecimal::add); } /**