使用Stream.reduce反演和不正确

Vip*_*pin 2 java reduce java-8 java-stream

使用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));
Run Code Online (Sandbox Code Playgroud)

输出为.5,但预计为1.5(1/1 + 1/2)

ole*_*nik 6

我认为使用map()它可能更简单.

double inversionSum = Arrays.stream(arr).map(val -> 1 / val).sum();
Run Code Online (Sandbox Code Playgroud)

  • @Vipin所说[这里](/sf/ask/3790087731/?noredirect=1#comment95122735_54144110),有区别,但是没有这意味着你的`for`循环更精确. (2认同)