【2D】ゲーム作成ツールGameMaker part2【マンセー】at GAMEDEV【2D】ゲーム作成ツールGameMaker part2【マンセー】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト953:名前は開発中のものです。 08/05/05 00:40:19 XEs+C953 >>952 小数を扱う場合、パソコン内では10進数ではなく2進数なので、 10進数ではキリのよい数値のように思えても、 2進数では無限循環小数(割り切れない割り算で、小数点以下を延々繰り返してしまう数)になってしまう数値がある。 もちろんパソコン内のメモリは無限ではないので、ある桁以下は省かれてしまう。 これを丸め誤差という。 以下のコードを実行してみるとわかるが、 i = 0.2; for (k=0;k<20;k+=1) { show_message(string_format(i,20,18)); i += 0.2; } i が 4 となるべきところで、GameMakerでは微妙に4より大きい数値になることがわかる。 (※常に大きい数値となるわけではなく、本来の数値より少なくなることもある) これは、丸め誤差が積み重なってできた誤差になってて、真に4となるわけではない。 なもんで、 if文の image_index == 4 の条件は満たさない、と考えられる。 このような理由で、プログラムの世界では浮動小数な変数をそのまま条件文でイコールを使うのはご法度。と言われてる。 誤差を意識したコーディングを心がける必要がある。 GameMakerの数値は全て浮動小数扱い。だが、整数のまま扱ってる分には問題ない、はず。 (私はプロじゃないんで…かじった知識程度で申し訳ない、間違ってたら指摘ヨロ) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch