【问题标题】:Different exponent behavior for different ruby versions不同 ruby​​ 版本的不同指数行为
【发布时间】:2013-02-12 04:00:07
【问题描述】:

我正在尝试在 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。

【问题讨论】:

  • 在我的机器上使用ruby 1.8.7 (2012-10-12 patchlevel 371) [i686-darwin12.2.0],值是正确的。
  • 我无法重现您在 1.8.7 中的奇怪行为。在 rvm 下运行,并使用 1.8.7-p358,我得到与 1.9.3-p125 相同的结果。
  • 这可能是该版本 1.8.7 中的错误,同样的事情发生在我使用系统 ruby​​ 的 Mac 上。可能和这个stackoverflow.com/questions/12009799/…有关

标签: ruby math exponent ruby-1.8.7


【解决方案1】:

我很确定您正在体验the bug mentioned in this post

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

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多