From: Yasumasa Fujisawa Date: 2000-09-13T14:19:36+09:00 Subject: [ruby-list:24938] Bignum の不具合 はじめまして。 藤沢泰全と申します。 rubyをハードウエア制御のプロトタイピングに使わせてもらっています。 ところで、40ビット長くらいのBignumで計算をしていましたが、特定の 数値の比較がうまくいかないことに気がつきました。 rubyのバージョンは1.4.6です。 例: % ruby -v ruby 1.4.6 (2000-08-16) [sparc-solaris2.6] % ruby eval.rb ruby> 4294967296 == 549755813888 true  # NG ruby> 274877906944 == 549755813888 true  # NG ruby> 549755813889 == 549755813888 false # OK ruby> 1125899906842624 == 549755813888 false # OK どうやら、(1 << 39)のように下位ビットに0が連続すると問題がおきる ことがあるようです。Linuxでも同様でした。 ご確認のほど、よろしくお願いします。 なお、別のマシンの古いバージョンではOKでした。 % ruby -v ruby 1.2.5(99/04/13) [sparc-sunos4.1.3_JL] % ruby eval.rb ruby> 4294967296 == 549755813888 false ruby> 274877906944 == 549755813888 false ruby> 549755813889 == 549755813888 false ruby> 1125899906842624 == 549755813888 false -- 藤沢 泰全