【Unity/C#】小数Round取整时,以0.5结尾的小数取整结果问题,Round(1.5)=2且Round(2.5f)=2

小数Round取整时,以0.5结尾的小数取整结果问题,Round(1.5)=2,并且Round(2.5f)=2 ???

 测试代码:

        Debug.Log(Mathf.Round(1.5f));               //2
        Debug.Log(Mathf.Round(2.5f));               //2
        Debug.Log(Mathf.Round(3.5f));               //4
        Debug.Log(Mathf.Round(4.5f));               //4

        Debug.Log(Mathf.RoundToInt(1.5f));          //2
        Debug.Log(Mathf.RoundToInt(2.5f));          //2
        Debug.Log(Mathf.RoundToInt(3.5f));          //4
        Debug.Log(Mathf.RoundToInt(4.5f));          //4

        Debug.Log(System.Math.Round(1.5f));         //2
        Debug.Log(System.Math.Round(2.5f));         //2
        Debug.Log(System.Math.Round(3.5f));         //4
        Debug.Log(System.Math.Round(4.5f));         //4

        Debug.Log(System.Math.Round(1.5f,System.MidpointRounding.AwayFromZero));    //2
        Debug.Log(System.Math.Round(2.5f,System.MidpointRounding.AwayFromZero));    //3
        Debug.Log(System.Math.Round(3.5f,System.MidpointRounding.AwayFromZero));    //4
        Debug.Log(System.Math.Round(4.5f,System.MidpointRounding.AwayFromZero));    //5

        Debug.Log(System.Math.Round(1.5f,System.MidpointRounding.ToEven));          //2
        Debug.Log(System.Math.Round(2.5f,System.MidpointRounding.ToEven));          //2
        Debug.Log(System.Math.Round(3.5f,System.MidpointRounding.ToEven));          //4
        Debug.Log(System.Math.Round(4.5f,System.MidpointRounding.ToEven));          //4

Unity取整函数: UnityEngine.Mathf.Round/UnityEngine.Mathf.RoundToInt 机制相同(向偶取整),如果数字结尾是 .5,从而使它处于两个整数正中间(其中一个是偶数,另一个是奇数),则返回偶数。

C#的Math取整函数,默认参数与Mathf相同,但可以通过MidpointRounding枚举参数指定规则:

MidpointRounding枚举值:(Unity中只有AwayFromZero和ToEven) 

如果对.5小数有较高要求,可以使用System.Math.Round(1.5f,System.MidpointRounding.AwayFromZero);

猜你喜欢

转载自blog.csdn.net/qq_39108767/article/details/120608724
今日推荐