Clojure-用大数字计算
我要计算Clojure-用大数字计算,clojure,overflow,integer-overflow,Clojure,Overflow,Integer Overflow,我要计算!1000在clojure中,如何在不出现整数溢出异常的情况下执行此操作 我的阶乘代码现在是:(reduce*(range 1 1001))将N放在数字的末尾,使其成为bigint (reduce * (range 1N 1001N)) 您可以使用*'运算符,该运算符通过自动将结果提升为BigInt来支持任意精度,以防结果溢出: (reduce *' (range 1 1001)) 强制参数为clojure.lang.BigInt (reduce * (range (bigint 1
!1000
在clojure中,如何在不出现整数溢出异常的情况下执行此操作
我的阶乘代码现在是:
(reduce*(range 1 1001))
将N放在数字的末尾,使其成为bigint
(reduce * (range 1N 1001N))
您可以使用
*'
运算符,该运算符通过自动将结果提升为BigInt来支持任意精度,以防结果溢出:
(reduce *' (range 1 1001))
强制参数为
clojure.lang.BigInt
(reduce * (range (bigint 1) (bigint 1001)))
例如,如果您使用的第三方库不使用*'
(defn factorial' [n]
(factorial (bigint n)))
谢谢这样做更简单、更干净。用这种方式而不是用@Hamza的方式有什么优点/缺点?