Rubyコーディングあれこれ (初めての方むけ: floatカウンタを作る)
本地震の予測マップ・プログラムはRubyで書かれていますが、以前から初めての方むけにコーディングテクのようなモノをまとめておければ、と考えていました。 そこで思い付くままにまとめてみよう、と考えております。
今回は、地震の予測マップ・プログラムを作っていて初めて遭遇した件で、floatカウンタの作り方です。 (短くまとめます)
普通に変数をfloatで取り0.1ピッチでカウンタアップさせると:
ctr = 1.0
while 2.0 > ctr do
p ctr # 最初は良いが途中から 1.2000000000000002 と端数が付き始める
ctr += 0.1
end
そこで10倍した整数でカウントアップし、それをfloatにして10.0で割ると
ctr = 10
while 20 > ctr do
tmp = ctr.to_f/10.0
p tmp # 1.0 1.1 1.2 と正常にカウントアップする
ctr += 1
end
端数をストリングにしてから外すとかbigdecimalを使うといった方法がwebに乗っていましたが、私はこれで構築しました。 北緯、東経をカウントアップさせる時に使っています。
この辺り、色々な方法があるようです。
以上です。