Bug #72

Float の NaN,Infinity,+0.0,-0.0

Added by date (Ken DATE) almost 4 years ago. Updated about 1 year ago.

[ruby-reference-manual:849]
Status:Open Start date:02/15/2008
Priority:Low Due date:
Assignee:- % 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

Updated by date (Ken DATE) almost 4 years ago

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? だけ修正。 

Updated by sheepman (Takashi Tamura) about 3 years ago

  • Assignee deleted (sheepman (Takashi Tamura))

Also available in: Atom PDF