Clojure - Calculate with big numbers

前端 未结 3 348
你的背包
你的背包 2020-12-19 00:54

I want to calculate !1000 in clojure, how can I do this without getting a integer-overflow exception?

My factorial code is right now: (reduce * (r

相关标签:
3条回答
  • 2020-12-19 01:07

    Coerce the parameters to clojure.lang.BigInt

    (reduce * (range (bigint 1) (bigint 1001)))
    

    I.e. if you are working with an third-party library that doesn't use *'

    (defn factorial' [n]
       (factorial (bigint n)))
    
    0 讨论(0)
  • 2020-12-19 01:20

    You could use the *' operator which supports arbitrary precision by automatically promoting the result to BigInt in case it would overflow:

    (reduce *' (range 1 1001))
    
    0 讨论(0)
  • 2020-12-19 01:23

    Put N at the end of the number which makes it a bigint,

    (reduce * (range 1N 1001N))
    
    0 讨论(0)
提交回复
热议问题