Bug #72 [ruby-reference-manual:849]
Float の NaN,Infinity,+0.0,-0.0
| 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? だけ修正。