如果我没有错,那么当你使用
时(int)的
与转换为Int32
相同Convert.ToInt32(值)
我正在使用以下代码运行方法:
public int CurrentAge()
{
// return Convert.ToInt32((DateTime.Now - BirthDay).TotalDays)/365;
return (int)((DateTime.Now - BirthDay).TotalDays)/365;
}
使用此日期:
DateTime.ParseExact("13-07-1985", "dd-MM-yyyy",null)
取消注释第一行,输出为30
,但使用(int)进行转换会产生29
。为什么会出现这种情况?
阅读这篇文章,例如:
difference between Convert.ToInt32 and (int)
我知道它应该是一样的。
答案 0 :(得分:5)
您会看到差异,因为实际数字是29.5或更高。 Casting截断值,而Convert
执行舍入:
double x = 29.5;
Console.WriteLine("Cast: {0} Convert: {1}", (int)x, Convert.ToInt32(x));
打印
Cast: 29 Convert: 30
答案 1 :(得分:1)
看起来它与您使用Convert.toInt32时包含/ 365有关,但在另一个您不包含的情况下。