[#42503] floatの値がずれる — Sato Hiroshi <hirocy.f01@...>

hirocyと申します.

33 messages 2006/07/04
[#42504] Re: floatの値がずれる — rubikitch <rubikitch@...> 2006/07/04

From: Sato Hiroshi <hirocy.f01@plala.to>

[#42505] Re: floatの値がずれる — Sato Hiroshi <hirocy.f01@...> 2006/07/04

hirocyです.るびきちさん,ありがとうございます.

[#42569] JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...>

こんばんは。

19 messages 2006/07/11
[#42570] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[#42572] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...> 2006/07/11

In message <1152619872.835566.21152.nullmailer@x31.priv.netlab.jp>

[#42575] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[ruby-list:42508] Re: floatの値がずれる

From: Kazuhiko <kazuhiko@...>
Date: 2006-07-04 12:26:15 UTC
List: ruby-list #42508
かずひこです。

いつぞやの関西勉強会でこのネタがあがったことがありました。

At Tue, 4 Jul 2006 21:07:41 +0900,
しん wrote:

> 単調増加なのでしたら、加算ではなく、積算という方法もあります。
> 
> i=0 ; 100.times{ x << 0.001*i ; i += 1}

Integer.times はブロックパラメータを取れるので

100.times{|i| x << 0.001*i}

と書けます。

また、Numeric#step を使っても積算できますね。こっちの方がちょっとだけ速
いっぽい。

x = []
0.0.step(0.1, 0.001) {|i| x << i}
p x

もしくは、「2進数的に割り切れる値(1.0/2**n)」ずつ増やすと、誤差があり
ません。

x = [0.0]
100.times { x << x[-1] + 1.0/1024 }
p x
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  「恋とハックはアジャイルが命!」

In This Thread