ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

四捨五入

floatやdoubleの値をintへと変換すると小数点以下は切り捨てられる。小数点以下を四捨五入したいときには0.5を足してから変換すれば良い。

float f = 123.456f;
f += 0.5f;
int i = (int)f;
cout << i << endl;
f = 456.789f;
f += 0.5f;
i = (int)f;
cout << i << endl;

実行結果
123
457

四捨五入する前の値が負の場合にはどうするか。そもそも負の数の四捨五入でどう定義されているのだろう。ネットで検索してみたら、いろいろとあって結局分からなかった。
四捨五入は値を近いほうにするという考え方だから、-123.456なら-123で、-456.789なら-457か。と考えると0.5を足すのではなく引いてやらないといけないか。