浮動小数点数とGUI入力

ActionGame.exeの重力加速度は、エディットボックスで編集可能な浮動小数点数です。
初期値は-0.6なんですが、これは十六進の浮動小数点表現では正確に表現することができません。
このため、-0.6を設定しても一旦浮動小数点数として書き出して、再度読み込むと-0.600001みたいな値に変わってしまいます。
この誤差はゲーム中では大した影響もありませんが、エディットボックスに端数が付いて表示されるのは格好悪いですし、少々分かりづらいです。


この問題の解決策としては、

  • 固定小数点数として記録しておき、ゲームで使う際に変換する
  • 文字列として記録しておき、ゲームで使う際に変換する

が考えられます。
今回は精度を決めうちできなかったので、後者を選択しました。
差分


なお、エディットボックスには何でも入力できてしまうので、

// 書式チェックのみ、戻り値は使わない
boost::lexical_cast<float>(info.gravity);

として書式だけ確認しています。