double和int类型的转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了double和int类型的转换相关的知识,希望对你有一定的参考价值。
double res=12345678901.0;
int a=res;//static_cast<int>(res);
cout<<a;
为什么a的结果是负数,超过11位的转换发生了什么,谁来告诉我
为什么我的问题都没人能准确的答出来呢= =
每一种数值数据类型都有它的表示范围
如unsigned char,占一个字节,可以表示0到2^8-1=255的数值
int型分配4个字节,你自己算一算
你把double型的转换成int型,首先会失去小数部分,第二个可能会截掉double的超出部分的位
如果赋值后,int的最高位为1,那么它就会变成负数,详阅 数据在计算机中的表示 参考技术A 超过11位会用最大数减去这个数,当然是负数追问
为什么是11位
参考技术B int 的最大数是六万多,你把这么大的数值给它就溢出了,所以就出错了以上是关于double和int类型的转换的主要内容,如果未能解决你的问题,请参考以下文章