独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< 悲惨な出来事 | main | Win32APIで遊ぼう1 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSSで使うのにおすすめな小数値





ということでね。
調べた結果の報告です。

まず前提として。
RGSSというかRubyというか多くのプログラム言語には「丸め誤差」というのがある。
知ってる人も多いと思うが、パソコンの中というのは0と1の1bitを最低単位として動いており、結果としてプログラムの中で10進だの16進だのを扱っていてもその実態は2進数の集合体だ。
8進数や16進数の場合「2^n進数」なので問題は無いが、こと10進数となると話が違う。
10進数で有理数であっても2進数では無理数となる場合がある。
10回
例えばこんなコードを書く。10回加算しているので答えは「1.0」になる……と思いきや。
0.9999999999999999
と、予定外の値になるのだ。これが「丸め誤差」と呼ばれるもの。2進数で有理数とならない値を強引に処理した結果である。
数回の加算などで深刻な影響が出ることは少ないだろうが、例えばSpriteのangleを継続変化させて1周したら何かするなどの時にangleが360と一致しないというミスを起こすことになるので、完全にほったらかせるような話でもないのである。

で。
Rational=分数1
RGSS3の場合はRationalクラスがあるので状況によっては何とかできなくもないが、まあもっと簡単にいきたいと思う人もいるだろう(俺とか)ということで、「2進数で無理数にならない」つまり「1/2^nの和で表せる」小数を簡単に調べてみた。
結果はこちら。ちなみに考慮したのは2^10まで。

桁数が少なく扱いやすそうなのは7種。0.125(1/8)の倍数だ。
次点となるのが8種。0.0625(1/16)の「奇数倍」だ(偶数倍は1/8の倍数)。
「0.2の代わりに0.1875にする」などは候補にしやすいかもしれない。
あとは、桁数が多い、切りが悪すぎるなど使いにくいその他の値。まあ、場合によって使えることもあるかもしれない。例えば「0.46875」なんかは360を割り切れる。まあこれなら0.5にするだろうが(笑)


さてこんなところで。
いつか誰かの役に立つことも一度はあるかもしれないと信じて今回はこの辺で。


タグ:[RGSS] [Ruby] [小数] [丸め誤差] [2進数]


| 2016.06.05 Sunday 22:56 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 22:56 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM