gpt4 book ai didi

java - 为什么 JRuby 不能识别 BigNums 而 Ruby 可以?

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:18 24 4
gpt4 key购买 nike

如果我输入这个大整数:

puts 9997836544.class.to_s

并使用 ruby​​ 1.86 编译,它会按预期报告:

BigNum

而 JRuby(Netbeans 中的 1.1.4)报告令人惊讶:

Fixnum

我以为 Java 有一个 BigInteger 类来对应 Ruby 中的 BigNum 类。如果是这样,我会期望 JRuby 和 ruby​​ 产生相同的输出。

最佳答案

找到这个 JRuby bug report :

It seems that JRuby and MRI have different limits to separate Fixnum and Bignum.
...
So, MRI uses 0x3fffffff as the biggest FixNum under 32bit environment.
And JRuby always uses 64bit value: jruby -e 'p (0x7fffffffffffffff + 1).class' ---> Bignum.

所以尝试一个更大的数字,你应该得到一个你期望的 BigNum。

关于java - 为什么 JRuby 不能识别 BigNums 而 Ruby 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537939/

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