ゲームを作ってるとfloatをintにキャスト(変換)したい事はよくあります。
小数部分を切り捨てたい場合、Unityでは主に(int)とMathf.FloorToIntという選択肢があります。
この2つ、正の値なら結果に変わりはないのですが、
float value1 = 1.2f; float value2 = 3.9f; Debug.Log($"{value1}(float)をint化, FloorToInt : {Mathf.FloorToInt(value1)}, (int) : {(int)value1}"); Debug.Log($"{value2}(float)をint化, FloorToInt : {Mathf.FloorToInt(value2)}, (int) : {(int)value2}");
![]() |
負の値の場合は結果が変わります。
float value1 = -1.2f; float value2 = -3.9f; Debug.Log($"{value1}(float)をint化, FloorToInt : {Mathf.FloorToInt(value1)}, (int) : {(int)value1}"); Debug.Log($"{value2}(float)をint化, FloorToInt : {Mathf.FloorToInt(value2)}, (int) : {(int)value2}");
![]() |
(int)は単純に小数部を無くしていますが、Mathf.FloorToIntは整数部分の値が変わっています。
つまり(int)は0に近い方に、Mathf.FloorToIntはより小さい方に切り捨てるという違いがあります。

