ページ 11

小数点以下のことについて質問です

Posted: 2012年6月10日(日) 23:29
by アップルミスト
環境
Windows Vista
DXライブラリ
VisualC++ 2010 Express


基本的なことなのでしょうもないことだと思いますが質問させて頂きます。

小数点以下の細かい数字についてはどのように表記すればよいのでしょうか?
例で

onex+=1     を     onex+=0.1

と表記することでは駄目なのでしょうか?
実際に試してみたところ、この表記では動きません

試しに分数で表現してみたところ、これもやはり正常な動きではありませんでした。

どう書けばいいのか、教えてください。

右に動かしたい画像があり、それを動かそうと思ってもうまくいかないのですが・・・

onexのxが抜けていました。
申し訳ございません。

Re: 小数点以下のことについて質問です

Posted: 2012年6月11日(月) 00:01
by みけCAT
oneの型は何ですか?
「動きません」とは、どのような動作を期待していて、どのように動くということですか?
それともコンパイルさえ通りませんか?

oneがdouble型の時、one+=0.1と書くと、若干の誤差が出ますが、ゲーム程度なら気にしなくていいと思います。
気になるようなら、自分で多倍長計算と分数型クラスを実装するという選択肢があります。

Re: 小数点以下のことについて質問です

Posted: 2012年6月11日(月) 00:10
by softya(ソフト屋)
int型は扱える値が整数ですから、そのまま少数以下の値を扱うことは出来ません。
floatやdouble型は少数を扱えますが、内部表現で2進法に変換する過程で10進法との間に僅かながら誤差を生じます。
そのため、0に0.1を100回足し時に10にはならないと言う癖があります。これさえ気をつければ足し算する分には問題ありません。
つまりif文でa == 10.0と比較してもイコールには永久にならない可能性があると言うことです。

Re: 小数点以下のことについて質問です

Posted: 2012年6月11日(月) 00:11
by アップルミスト
なるほど!

int型でやっていました・・・

遅くにありがとうございました