使用 Streams 實現數學函式

Streams,尤其是 IntStreams,是實現求和項(Σ)的一種優雅方式。Stream 的範圍可以用作求和的邊界。

例如,Madhava 對 Pi 的近似由公式給出(來源: 維基百科 ): StackOverflow 文件

這可以用任意精度計算。例如,101 個術語:

double pi = Math.sqrt(12) * 
            IntStream.rangeClosed(0, 100)
                     .mapToDouble(k -> Math.pow(-3, -1 * k) / (2 * k + 1))
                     .sum();

注意: 使用 double 的精度,選擇 29 的上限足以得到與 Math.Pi 無法區分的結果。