gpt4 book ai didi

Clojure,我希望长乘法溢出

转载 作者:行者123 更新时间:2023-12-02 21:05:00 25 4
gpt4 key购买 nike

我想做 64 位算术(不是自然数),所以我例如需要两个长整型的乘法才能悄无声息地溢出。

(unchecked-multiply Long/MAX_VALUE 3)

就可以了。但是

(def n Long/MAX_VALUE)
(unchecked-multiply n 3)

给出溢出异常。我做错了什么?

(Clojure 1.5.1)

最佳答案

在第一种情况下,两个参数均未装箱 long s,所以(long, long)过载clojure.lang.Numbers.unchecked_multiply用来。正如预期的那样,它不会引发溢出。

在第二种情况下,n已装箱,因此 (Object, Object)调用重载,并且简单地将其委托(delegate)给 multiply抛出溢出的方法。

你需要说

(unchecked-multiply (long n) 3)

这样(long, long)使用了重载。

关于Clojure,我希望长乘法溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699292/

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