Project

General

Profile

Actions

Bug #1645

closed

大きな数の比較で正しくない結果になることがある

Added by tadf (tadayoshi funaba) over 15 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2dev (2009-06-17 trunk 23726) [i686-linux]
Backport:
[ruby-dev:38672]

Description

=begin
大きな数の比較で正しくない結果になることがある

main@192-20090617> inf = 1.0/0.0
#=> Infinity
main@192-20090617> inf <=> (Float::MAX.to_i*2)
#=> 0
=end


Related issues 1 (0 open1 closed)

Related to Backport187 - Backport #5319: Problem backporting [ruby-dev:38672] to 1.8.7p334Closedshyouhei (Shyouhei Urabe)Actions
Actions #1

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

Actions #2

Updated by tadf (tadayoshi funaba) over 15 years ago

=begin
内容は見ていませんが、上記の例はたしかに期待どおりの結果になりました。
しかし、未知のクラスにはやはり対処できないものなのでしょうね。

main@192-20090618> inf <=> BigDecimal((Float::MAX.to_i*2).to_s)
#=> 0

=end

Actions #3

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 writes:

|しかし、未知のクラスにはやはり対処できないものなのでしょうね。
|
|main@192-20090618> inf <=> BigDecimal((Float::MAX.to_i*2).to_s)
|#=> 0

今回の修正ではそうですね。しかし、

  • Floatがinfで
  • infinite?メソッドが定義されていて
  • それが偽を返す時

を特別扱いすれば、対処可能な気がしてきました。

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0