Clojure - 用大数字计算

Saw*_*wny 11 clojure overflow integer-overflow

我想!1000在clojure中计算,如何在不获得整数溢出异常的情况下执行此操作?

我的阶乘代码现在是:(reduce * (range 1 1001)).

mty*_*aka 21

你可以使用*'支持任意精度的运算符,通过自动将结果提升到BigInt,以防它溢出:

(reduce *' (range 1 1001))
Run Code Online (Sandbox Code Playgroud)


Ham*_*aya 6

把N放在数字的末尾,这使得它变得很大,

(reduce * (range 1N 1001N))
Run Code Online (Sandbox Code Playgroud)