【发布时间】:2012-08-17 16:43:15
【问题描述】:
当我尝试在 irb 中计算 3**557 时遇到了这个问题。 Ruby 和 MacRuby 都安装在我的 Mac (OS X 10.8) 中。 ruby 的版本是 1.8.7,MacRuby 的版本是 0.12(ruby 1.9.2)。 rib 和 macirb 在计算 3**557 时给了我两个不同的答案。 (macirb 是对的。)
$ irb
>> 3**557
=> 54755702179342762063551440788945541007926808765326951193810107165429610423703291760740244724326099993131913104272587572918520442872536889724676586931200965615875242243330408150984753872526006744122187638040962508934109837755428764447134683114539218909666971979603
$ macirb
irb(main):001:0> 3**557
=> 57087217942658063217290581978966727348872586279944803346410228520919738045995056049600505293676159316424182057188730248707922985741467061108015301244570536546607487919981026877250949414156613856336341922395385463291076789878575326012378057561766997352898452974964563
然后我尝试了更大的东西,例如3**5337,这次我得到了同样的答案。
那么,这是 Ruby 1.8.7 中的一个错误,还是我应该使用另一种方法来计算幂?
【问题讨论】:
-
与 Ruby 无关,但您可能需要查看modular exponentiation,具体取决于您对结果的处理方式。
-
我没有安装 1.9.3 之前的 MRI,但这确实给出了正确的结果。
-
您使用的是哪种型号的 mac?我无法使用相同版本的 Ruby (1.8.7 p358) 在我的 MacPro (Xeon) 上重现这一点。我也不能在 32 位运行的旧 1.8.6 上。
-
也适用于配备 1.8.7 p358 的 MacBook Pro (core 2 duo)...
-
型号为MC721CH/A。运行 64 位的 Mac OS X 10.8。 Xcode 4.4.1 (4F1003)、MacRuby 0.12。
标签: ruby bignum exponential