ruby - 不同 ruby​​ 版本的不同指数行为

标签 ruby math exponent ruby-1.8.7

我正在尝试用 ruby​​ 计算 2^1000,但对于不同的版本我得到了不同的结果。知道为什么吗?

使用 1.8.7:

~ » rbenv global system                                                                         ~  
~ » ruby --version                                                                              ~  
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
~ » irb                                                                                         ~  
>> 2 ** 1000
0
>> exit

使用 ruby 1.9.3

~ » rbenv global 1.9.3-p194                                                                     ~  
~ » ruby --version                                                                              ~  
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.1.0]
~ » irb                                                                                         ~  
>> 2 ** 1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
>> exit

我可以绕过使用该语法并让它工作,但我只是好奇为什么它在 1.8.7 中导致 0。

最佳答案

我有理由确定您正在经历 the bug mentioned in this post .

看起来好像是 fixed by this commit to Ruby trunk ,这使其适用于 Ruby 1.9.3-p0 及更高版本。

关于ruby - 不同 ruby​​ 版本的不同指数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825152/

相关文章:

javascript - 在 MathJax 中有什么理由支持 MathML 语法而不是 TeX?

javascript - 如何迭代两个数组并生成唯一的 y 坐标

ruby-on-rails - Ruby:不兼容的库版本

ruby - 纠正无效 CSV 文件的工具

ruby - 如何在 Sequel ORM 中将行作为数组(而不是哈希)获取?

ruby - `require' : cannot load such file -- rdoc/usage (LoadError)

Javascript 图像调整大小计算

java - 将递归程序转为迭代

java - Java Biginteger 在 pow 中的最大值

ruby - Ruby 在使用整数和 float 时如何解释指数?