如果我没有错,当你使用时
(INT)
它与转换为Int32相同
Convert.ToInt32(值)
我正在使用以下代码运行方法:
public int CurrentAge()
{
// return Convert.ToInt32((DateTime.Now - BirthDay).TotalDays)/365;
return (int)((DateTime.Now - BirthDay).TotalDays)/365;
}
Run Code Online (Sandbox Code Playgroud)
使用此日期:
DateTime.ParseExact("13-07-1985", "dd-MM-yyyy",null)
Run Code Online (Sandbox Code Playgroud)
并取消注释第一行,输出是30,但使用(int)转换导致29.为什么会这样?
阅读这篇文章例如:
我明白它应该是一样的.
您会看到差异,因为实际数字是29.5或更高.Casting截断值,同时Convert执行舍入:
double x = 29.5;
Console.WriteLine("Cast: {0} Convert: {1}", (int)x, Convert.ToInt32(x));
Run Code Online (Sandbox Code Playgroud)
这打印
Cast: 29 Convert: 30
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |