我们来看下三种方法在三种使用场景中的表现,直接上代码:
//object 转 int 四舍五入取偶法
object num1 = 4.5;
Debug.Log(Convert.ToInt32(num1)); //4
object num2 = 3.5;
Debug.Log(Convert.ToInt32(num2)); //4
object num3 = null;
Debug.Log(Convert.ToInt32(num3)); //0
//一般值类型之间的转换 向下取整
ETest eNum = ETest.EClient;
Debug.Log((int)eNum); //1
Debug.Log((int)(4.5)); //4
Debug.Log((int)(3.5)); //3
//string 转 int
string sNum1 = "4";
Debug.Log(int.Parse(sNum1)); //4
string sNum2 = "4.5";
Debug.Log(int.Parse(sNum2)); //Exception
string sNum3 = "";
Debug.Log(int.Parse(sNum3)); //Exception
输出:
根据执行结果来看,需要注意的是:
第一种情况,当值是float的时候:
Convert.ToInt32() 会进行“非标准”的四舍五入,如果值恰好是某两个整数的中间数,则取偶数。
而(int)就是向下取整
而int.parse 是会抛出异常的。
第二种情况,当值是null的时候
Convert.ToInt32() 返回0
而int.parse 还是是会抛出异常的