Unityで四捨五入をするときはMathf.Round(value)をすると四捨五入になりません。例えば以下のようにコードを書くと
1 2 3 4 |
Debug.Log(Mathf.Round(0.4f)); Debug.Log(Mathf.Round(0.5f)); Debug.Log(Mathf.Round(0.6f)); |
出力結果は
1 2 3 |
0 0 1 |
になります。それを回避するために以下のようにMathfではなくMathを使用します。Math.Roundはdouble型で返すのでfloatにする場合は(float)をつけます。
1 |
(float)Math.Round(value, MidpointRounding.AwayFromZero); |
Math.Roundを使うと
1 2 3 |
Debug.Log((float)Math.Round(0.4, MidpointRounding.AwayFromZero)); Debug.Log((float)Math.Round(0.5, MidpointRounding.AwayFromZero)); Debug.Log((float)Math.Round(0.6, MidpointRounding.AwayFromZero));<br> |
とした場合に出力結果は
1 2 3 |
0 1 1 |
となります。
コメントを残す