Различное поведение экспоненты для разных версий ruby

Я пытаюсь вычислить 2^1000 в 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

Использование рубина 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

Я могу обойти этот синтаксис и заставить его работать, но мне просто любопытно, почему он приводит к 0 в 1.8.7.


person mportiz08    schedule 12.02.2013    source источник
comment
С ruby 1.8.7 (2012-10-12 patchlevel 371) [i686-darwin12.2.0] на моей машине значение правильное.   -  person Prakash Murthy    schedule 12.02.2013
comment
Я не могу воспроизвести ваше странное поведение 1.8.7. Работая под rvm и используя 1.8.7-p358, я получаю те же результаты, что и 1.9.3-p125.   -  person Wayne Conrad    schedule 12.02.2013
comment
Это может быть ошибка в этой версии 1.8.7, то же самое происходит на моем Mac, использующем системный рубин. Возможно, это связано с этим stackoverflow.com/questions/12009799/   -  person Peter Brown    schedule 12.02.2013


Ответы (1)


Я разумно уверен, что вы столкнулись с ошибкой, упомянутой в этом посте. .

Похоже, что это было исправлено этой фиксацией в магистрали Ruby, из-за чего Руби 1.9.3-p0 и выше.

person Nathan Kleyn    schedule 16.04.2013