UnityのRoundToIntで四捨五入する際の「銀行家の丸め」メモ

UnityのRoundToIntで四捨五入する際の「銀行家の丸め」メモ

11.5f は 12 で、 10.5f は 10 となる

実際にDebug.Logで計算結果を出してみるとこんな感じ

Debug.Log(Mathf.RoundToInt(10.0F)); // 10
Debug.Log(Mathf.RoundToInt(10.2F)); // 10
Debug.Log(Mathf.RoundToInt(10.7F)); // 11
Debug.Log(Mathf.RoundToInt(10.5F)); // 10
Debug.Log(Mathf.RoundToInt(11.5F)); // 12
Debug.Log(Mathf.RoundToInt(-10.0F)); // -10
Debug.Log(Mathf.RoundToInt(-10.2F)); // -10
Debug.Log(Mathf.RoundToInt(-10.7F)); // -11
Debug.Log(Mathf.RoundToInt(-10.5F)); // -10
Debug.Log(Mathf.RoundToInt(-11.5F)); // -12

四捨五入では0.5を常に切り上げますが、Roundは丸めた計算結果が偶数になるような丸め方をしているようです。

「最近接偶数への丸め」「最近偶数丸め」「銀行家の丸め」とも言われるようです。

参考にさせて頂いたサイトm( _ _ )m:

https://dobon.net/vb/dotnet/programing/round.html#.Wk8SUgq1EI0.twitter

https://docs.unity3d.com/ja/540/ScriptReference/Mathf.RoundToInt.html

https://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86#%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.