C语言:浮点数上溢、下溢学习记录

您所在的位置:网站首页 c语言中数据溢出怎么办 C语言:浮点数上溢、下溢学习记录

C语言:浮点数上溢、下溢学习记录

2024-07-10 21:33| 来源: 网络整理| 查看: 265

浮点数上溢、下溢 什么是上溢?

数据大于当前定义类型的范围,导致出现异常数据的现象。 (当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。)

例子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