gpt4 book ai didi

clojure - 如何避免Clojure中的 “ArithmeticException integer overflow”?

转载 作者:行者123 更新时间:2023-12-03 13:13:30 26 4
gpt4 key购买 nike

它似乎一直在发生。例如:

(apply * (range 1 101))

给我错误
ArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1374)

虽然在Ruby 1.9.2中(概念上)等效代码,
(1..100).reduce(:*)

产生预期的结果
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

显然,这两种语言在后台完全不同,但是似乎它们都应该能够毫无问题地处理此计算。我在这里做错什么了吗?还是我的理解不正确?

最佳答案

您需要使用某种形式的BigInteger。

尝试(apply *' (range 1 101))

(请参阅http://dev.clojure.org/display/doc/Documentation+for+1.3+Numerics-显然这会在溢出时自动促进?)

关于clojure - 如何避免Clojure中的 “ArithmeticException integer overflow”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com