Actions
Bug #1645
closed大きな数の比較で正しくない結果になることがある
Description
=begin
大きな数の比較で正しくない結果になることがある
main@192-20090617> inf = 1.0/0.0
#=> Infinity
main@192-20090617> inf <=> (Float::MAX.to_i*2)
#=> 0
=end
Updated by matz (Yukihiro Matsumoto) over 15 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
Applied in changeset r23730.
=end
Updated by tadf (tadayoshi funaba) over 15 years ago
=begin
内容は見ていませんが、上記の例はたしかに期待どおりの結果になりました。
しかし、未知のクラスにはやはり対処できないものなのでしょうね。
main@192-20090618> inf <=> BigDecimal((Float::MAX.to_i*2).to_s)
#=> 0
=end
Updated by matz (Yukihiro Matsumoto) over 15 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:38681] [Bug #1645] 大きな数の比較で正しくない結果になることがある"
on Thu, 18 Jun 2009 23:00:02 +0900, tadayoshi funaba redmine@ruby-lang.org writes:
|しかし、未知のクラスにはやはり対処できないものなのでしょうね。
|
|main@192-20090618> inf <=> BigDecimal((Float::MAX.to_i*2).to_s)
|#=> 0
今回の修正ではそうですね。しかし、
- Floatがinfで
- infinite?メソッドが定義されていて
- それが偽を返す時
を特別扱いすれば、対処可能な気がしてきました。
=end
Actions
Like0
Like0Like0Like0