System.Double 的对象无法转换为类型 System.Int32 怎么回事
6个回答
展开全部
原因分析
double为64位,范围为-2^63到2^63-1;int为32为,范围为-2^31到2^31-1。double比int的范围大,编译器不允许从范围大的类型,转成范围较小的类型。
解决方案
使用强转,可以直接在变量前加(int)
备注提醒
建议使用类型强转,要将精度低的转成精度高的,将范围小的转成范围大的。如float转成double,int转long int。否则的话,会丢失信息。
int main ()
{
double d=1.11111;
int s=(int)d;
printf("d=%lf,s=%d\n",d,s);
return 0;
}
运行结果:
d=1.111111,s=1
运行结果说明:
输出s和d和可发现,s为整型,取整数部分,小数部分丢失,也就是精度丢失。
展开全部
Double比Int大,所以需要强制转换才行
double d = 123456;
int i =(int)double;
double d = 123456;
int i =(int)double;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
asp.net 解决方法:
如果System.Double对象为NULL就不能转换,会出错,要转换成Int32就要强制转换如下:
double a = 0.0;
int b = Convert.ToInt32(a);
如果System.Double对象为NULL就不能转换,会出错,要转换成Int32就要强制转换如下:
double a = 0.0;
int b = Convert.ToInt32(a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.Double的表示范围比System.Int32的表示范围大!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
反射赋值,要保证数据值的类型和目标属性类型兼容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询