C#对于int类型在隐式转换和强制转换上是有一定区别的,对于C#细节的差别还是需要多尝试才能心中有数,不然就可能在编程的时候导致一些很诡异的计算结果不正确,下面是各种转换版本之间细微的区别,希望大家以后在使用的时候注意:
int x1 = (int)234.67f 结果是234 (直接去掉了小数位)
int x2 = Convert.ToInt32(234.67f) 结果是 235 (进行四舍五录)
int x3 = Math.Ceiling(234.12f) 结果是 235 (只要有小数位就录一)
显示转换不对结果进行四舍五录,强制转换后结果进行四舍五录,Math.Ceiling总是上录数。
int.TryParse("10.00", out x)转换失败 (当int进行带有小数位的尝试转换时会失败)
float.TryParse("1,3230.10", out x) 转换成功