Bug #72 [ruby-reference-manual:849]

Float の NaN,Infinity,+0.0,-0.0

Added by Ken DATE 395 days ago. Updated 76 days ago.

Status :Open Start :02/15/2008
Priority :Low Due date :
Assigned to :- % Done :

0%

Category :doc
Target version :-
reporter :

rock

ruby_version :

1.8,1.9


Description

class Float のページに,NaN,Infinity,+0.0,-0.0 についての説明がありません。

これらの“数”の意味のほかに,以下のようなことを盛り込むべきかと思います。

    * これらの“数”の発生のさせ方,あるいはリテラル表現
    * これらの“数”の関係(-0.0 == 0.0 は真だが (0.0/0) == (0.0/0) は偽とか,も)
    * これらの“数”の文字列表現(-0.0.to_s が "-0.0" でなく "0.0" になることも)
    * +0.0 と -0.0 の区別の仕方
    * 0.0 と +0.0 も違う(0.0.equal? +0.0 #=> false)こと

あと,"Infinity" や "NaN" は単なる文字列表現であって,Float クラスの定数というわけではない,
なんて入れなくていいでしょうか。

上記のことが書かれていれば,Float#infinite? にある

  浮動小数点数の 0 による除算は ∞ です。

とか,Float#nan?にある

  浮動小数点数 0 の 0 による除算は NaN です。

は削除していいでしょう。前者は間違いですし(反例:-1.0/0)

History

06/03/2008 11:24 PM - Ken DATE

sheepman (2008-02-16 (土) 00:10:47)

0.0.equal? +0.0 が false なのはそれぞれが異なるオブジェクト ID を持つからです。

-0.0.to_s は僕の手元では "-0.0" になるようです。

Float の細かなど動作はプラットフォーム依存であり、知りたい人はIEEE 754を読むべきなんだと思います。読んだことないけど。

sheepman (2008-02-16 (土) 00:58:18)

r2484 で Float#infinite? と Float#nan? だけ修正。 

04/19/2009 05:23 PM - Takashi Tamura

  • Assigned to deleted (Takashi Tamura)

Also available in: Atom PDF