代码之家  ›  专栏  ›  技术社区  ›  Vipin

使用stream.reduce时求和不正确

  •  2
  • Vipin  · 技术社区  · 6 年前

    使用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));
    

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

    2 回复  |  直到 6 年前
        1
  •  6
  •   Oleg Cherednik    6 年前

    我想用 map() 这可能更简单。

    double inversionSum = Arrays.stream(arr).map(val -> 1 / val).sum();
    
        2
  •  0
  •   Kees Pastinaak    6 年前

    减少的错误是:double.sum(1.0/a,1.0/b),从0.0开始。现在检查一下为什么结果是.5。

    如果要使用reduce,请使用double.sum(a,1.0/b)。