環境
Windows Vista
DXライブラリ
VisualC++ 2010 Express
基本的なことなのでしょうもないことだと思いますが質問させて頂きます。
小数点以下の細かい数字についてはどのように表記すればよいのでしょうか?
例で
onex+=1 を onex+=0.1
と表記することでは駄目なのでしょうか?
実際に試してみたところ、この表記では動きません
試しに分数で表現してみたところ、これもやはり正常な動きではありませんでした。
どう書けばいいのか、教えてください。
右に動かしたい画像があり、それを動かそうと思ってもうまくいかないのですが・・・
onexのxが抜けていました。
申し訳ございません。
小数点以下のことについて質問です
小数点以下のことについて質問です
最後に編集したユーザー アップルミスト on 2012年6月11日(月) 00:10 [ 編集 1 回目 ]
Re: 小数点以下のことについて質問です
oneの型は何ですか?
「動きません」とは、どのような動作を期待していて、どのように動くということですか?
それともコンパイルさえ通りませんか?
oneがdouble型の時、one+=0.1と書くと、若干の誤差が出ますが、ゲーム程度なら気にしなくていいと思います。
気になるようなら、自分で多倍長計算と分数型クラスを実装するという選択肢があります。
「動きません」とは、どのような動作を期待していて、どのように動くということですか?
それともコンパイルさえ通りませんか?
oneがdouble型の時、one+=0.1と書くと、若干の誤差が出ますが、ゲーム程度なら気にしなくていいと思います。
気になるようなら、自分で多倍長計算と分数型クラスを実装するという選択肢があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 小数点以下のことについて質問です
int型は扱える値が整数ですから、そのまま少数以下の値を扱うことは出来ません。
floatやdouble型は少数を扱えますが、内部表現で2進法に変換する過程で10進法との間に僅かながら誤差を生じます。
そのため、0に0.1を100回足し時に10にはならないと言う癖があります。これさえ気をつければ足し算する分には問題ありません。
つまりif文でa == 10.0と比較してもイコールには永久にならない可能性があると言うことです。
floatやdouble型は少数を扱えますが、内部表現で2進法に変換する過程で10進法との間に僅かながら誤差を生じます。
そのため、0に0.1を100回足し時に10にはならないと言う癖があります。これさえ気をつければ足し算する分には問題ありません。
つまりif文でa == 10.0と比較してもイコールには永久にならない可能性があると言うことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。