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

Mee*_*eem 1 c# casting

在这里,我需要将精度转换为整数.

示例:

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

类型:

  • DayDifference 类型 int

  • DateDiff类型double precisiondatabase table.

错误:

指定演员表无效

Jon*_*eet 9

你在做什么相当于:

object x = 32.5;
int y = (int) x;
Run Code Online (Sandbox Code Playgroud)

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

所以你需要:

object x = 32.5;
int y = (int) (double) x;
Run Code Online (Sandbox Code Playgroud)

转换为doubleunboxes,int转换为转换doubleint.您可以在代码中执行相同的操作:

(Int32)(Double) reader["DateDiff"] : 0;
Run Code Online (Sandbox Code Playgroud)

1好吧,模数一些东西.CLR允许您将基础类型等的inta uint或unbox取消打包到枚举类型int.