指定的强制转换无效(双精度为int)

时间:2014-07-25 06:21:24

标签: c# casting

这里我需要将double精度转换为整数。

示例

obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ?   
               (Int32)reader["DateDiff"] : 0;

类型

  • DayDifference类型int

  • {li>

    DateDiff double precisiondatabase table的{​​{1}}。

错误

  

指定的演员表无效

1 个答案:

答案 0 :(得分:7)

你所做的相当于:

object x = 32.5;
int y = (int) x;

你不能这样做 - 当你取消装箱时,你必须取消装箱到实际类型的值 1

所以你需要:

object x = 32.5;
int y = (int) (double) x;

转化为double取消装置,而转化为int会将double转换为int。您可以在代码中执行相同的操作:

(Int32)(Double) reader["DateDiff"] : 0;

1 嗯,模数一些东西。 CLR允许您将int拆分为uint或基础类型为int的枚举类型等。