基于下面链接提到的一个问题,在使用lambda表达式对BigDecimal类型的数据进行操作的时候,会遇到操作运算符并被识别的问题,具体原因详见链接;
https://*.com/questions/53983334/why-it-works-bigdecimal-sum-with-reduce-and-bigdecimaladd
解决办法:
BigDecimal sums = testFoods.stream().map(f -> BigDecimal.valueOf(parseNumber(f.getProtein()))).collect(Collectors.toList()).stream().reduce(BigDecimal.ZERO, BigDecimal::add);
另,在实际处理数据的时候避免精度丢失,应尽量使用BigDecimal类型来存放数据处理结果
内容原创,转载请注明出处