使用Stream.reduce反转求和不正确,这是怎么回事?
double[] array = {1.0, 2.0};
double iunversionSum = Arrays.stream(array).reduce(0.0, (a, b) -> Double.sum(1.0 / a, 1.0 / b));
输出为0.5,但预期为1.5(1/1 + 1/2)
答案 0 :(得分:6)
我认为使用map()
可能会更简单。
double inversionSum = Arrays.stream(arr).map(val -> 1 / val).sum();
答案 1 :(得分:0)
reduce中的错误是:Double.sum(1.0 / a,1.0 / b),从0.0开始的序列。现在检查为什么您的结果是0.5。
如果要使用reduce,请使用Double.sum(a,1.0 / b)。