2013-02-12 58 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

回答