當我嘗試在irb中計算3 ** 557時遇到此問題。 Ruby和MacRuby都安裝在我的Mac(OS X 10.8)中。和紅寶石的版本是1.8.7,MacRuby 0.12(紅寶石1.9.2)。 肋骨和macirb在計算3 ** 557時給了我兩個不同的答案。 (macirb's是對的。)Ruby 1.8.7中的求冪指數返回錯誤的答案
$ irb
>> 3**557
=> 54755702179342762063551440788945541007926808765326951193810107165429610423703291760740244724326099993131913104272587572918520442872536889724676586931200965615875242243330408150984753872526006744122187638040962508934109837755428764447134683114539218909666971979603
$ macirb
irb(main):001:0> 3**557
=> 57087217942658063217290581978966727348872586279944803346410228520919738045995056049600505293676159316424182057188730248707922985741467061108015301244570536546607487919981026877250949414156613856336341922395385463291076789878575326
然後我嘗試了更大的東西, 3 ** 5337,這次我得到了同樣的答案。
那麼,這是Ruby 1.8.7中的一個錯誤,還是我應該用另一種方式來計算指數?
無關的紅寶石明確,但你可能想看看[模冪(http://en.wikipedia.org/wiki/Modular_exponentiation)取決於你對結果做了什麼。 – jli 2012-08-17 16:46:26
我沒有安裝MRI 1.9.3之前的版本,但是確實給出了正確的結果。 – 2012-08-17 17:36:21
你正在使用哪種確切型號的mac?我無法在MacPro(Xeon)上使用相同版本的Ruby(1.8.7 p358)重現此操作。我也不能在32位的舊版1.8.6上運行。 – 2012-08-17 18:16:52