From: Masahiro TANAKA Date: 2003-05-07T13:32:11+09:00 Subject: [ruby-dev:20177] Re: Numeric#step At Wed, 7 May 2003 00:02:54 +0900, Tanaka Akira wrote: > なんとなく、 > > % ruby -ve '1.1.step(1.4, 0.1) {|n| printf("%.20f\n", n) }' > ruby 1.8.0 (2003-05-06) [i686-linux] > 1.10000000000000008882 > 1.20000000000000017764 > 1.30000000000000004441 > % 誤差の出し方を以下のようにすべきのような気がしてきました。 const double epsilon = DBL_EPSILON; double beg = NUM2DBL(from); double end = NUM2DBL(to); double unit = NUM2DBL(step); double n = (end - beg)/unit; double err = (fabs(beg) + fabs(end) + fabs(end-beg)) / fabs(unit) * epsilon; long i; if (err>0.5) err=0.5; n = floor(n + err) + 1; for (i=0; i