使用(int)和Convert.ToInt(32)将double转换为int不同的结果

时间:2015-03-26 15:24:15

标签: c# int

如果我没有错,那么当你使用

  

(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)

我知道它应该是一样的。

2 个答案:

答案 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

Demo.

答案 1 :(得分:1)

看起来它与您使用Convert.toInt32时包含/ 365有关,但在另一个您不包含的情况下。