C语言:浮点数上溢、下溢学习记录 |
您所在的位置:网站首页 › c语言中数据溢出怎么办 › C语言:浮点数上溢、下溢学习记录 |
浮点数上溢、下溢
什么是上溢?
数据大于当前定义类型的范围,导致出现异常数据的现象。 (当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。) 例子1在我电脑中float类型的长度是4个字节,数值范围为 -3.4E+38 到3.4E+38。 #include int main(void) { float a, b; a = 3.4E38; b = 3.4E38 * 100.0f; // float 的数值范围: -3.4E+38 到3.4E+38 printf("a = %e\n",a); // float 最大值 printf("b = %e\n",b); // 超过最大值 return 0; }通过给float类型变量赋值,可以看出当数值超过定义类型的范围时,就会出现上溢。而现在C语言规定,在这种情况下会给float类型变量赋一个无穷大的特定值,如图所示。 什么是下溢?以一个十进制为例,把一个有4位有效数字的数(如,0.1234E-10)除以10,得到的结果为:0.0123E-10.虽然得到了结果,但是在计算过程中丢失了原末尾有效位尚的数字,这种情况叫做下溢。 例子 #include int main(void) { float c, d; c = 1.4E-45; d = 1.4E-45 / 2; printf("c = %e\n",c); printf("d = %e\n",d); }C语言把损失类型全精度的浮点值称为低于正常的浮点值,因此把最小的浮点数除以2会得到一个低于正常的值。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |