2013-02-12 55 views
3

我试图计算2^1000在ruby中,但我得到不同版本的不同结果。任何想法为什么?不同的指数行为为不同的ruby版本

使用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。

+0

用我的机器上的'ruby 1.8.7(2012-10-12 patchlevel 371)[i686-darwin12.2.0]',这个值是正确的。 – 2013-02-12 04:13:42

+0

我无法重现你的奇怪的1.8.7行为。运行在rvm下,并使用1.8.7-p358,我得到了与1.9.3-p125相同的结果。 – 2013-02-12 04:13:43

+6

这可能是1.8.7版本中的一个bug,同样的事情发生在我的Mac上使用系统红宝石。也许它与此有关http://stackoverflow.com/questions/12009799/exponentiation-in-ruby-1-8-7-returns-wrong-answers – 2013-02-12 04:15:35

回答