Bug #781
closedNumeric#step で step として Infinity をつかうと NaN を生成することがある
Description
=begin
1.0/0 = Infinity として
$ ./ruby -ve "0.step(10,1.0/0){|x| p x}"
ruby 1.9.0 (2008-11-24 revision 20336) [i686-linux]
NaN
1.8 も同じですが、1.6 はなりません。
$ ruby168 -ve "0.step(10,1.0/0){|x| p x}"
ruby 1.6.8 (2002-12-24) [i686-linux]
0
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
- Status changed from Open to Closed
=begin
fixed by r20348.
=end
Updated by tadf (tadayoshi funaba) about 16 years ago
=begin
単に確認ですが、step が浮動小数点数だと、最初から浮動小数点数になっ
ていて、他の場合と違うように見えます。これはこういうものですか。
$ ./ruby -e "p 0.step(3,1.0){|x| p [x, x.class]}"
[0.0, Float]
[1.0, Float]
[2.0, Float]
[3.0, Float]
0
$ ./ruby -e "p 0.step(3,Rational(1)){|x| p [x, x.class]}"
[0, Fixnum]
[(1/1), Rational]
[(2/1), Rational]
[(3/1), Rational]
0
$ ./ruby -rbigdecimal -e "p 0.step(3,BigDecimal('1')){|x| p [x, x.class]}"
[0, Fixnum]
[#BigDecimal:81b5d48,'0.1E1',4(12), BigDecimal]
[#BigDecimal:81b5bcc,'0.2E1',4(12), BigDecimal]
[#BigDecimal:81b5adc,'0.3E1',4(12), BigDecimal]
0
=end
Updated by matz (Yukihiro Matsumoto) about 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37188] [Bug #781] Numeric#step で step として Infinity をつかうと NaN を生成することがある"
on Tue, 25 Nov 2008 23:39:19 +0900, tadayoshi funaba redmine@ruby-lang.org writes:
|単に確認ですが、step が浮動小数点数だと、最初から浮動小数点数になっ
|ていて、他の場合と違うように見えます。これはこういうものですか。
beg, end, stepのいずれかがFloatだとぜんぶFloatで計算します。
これはそういうもののつもりです。
=end