表示程序输出中的浮点下溢

时间:2016-02-18 13:59:30

标签: c floating-point underflow

我做了彻底的搜索,但似乎只是找到了什么是下溢的解释,以及它是如何工作的,而不是代表它的方法。

长话短说,我正在编写一个程序来试验整数溢出,浮点溢出(inf)和下溢 - 并使用printf函数输出这些条件的效果。我在前两个方面取得了成功,但由于浮点下溢,似乎无法成功表示一个次正规数。据我所知,我知道,根据系统处理条件的方式,下溢的症状可能是输出中的数字丢失,或者四舍五入为零。

为了找到最低的浮点值,我查看了float.h头文件。 FLT_MIN上升为0.000000(因此在演示导致下溢的操作时不可行),并且DEC32_MIN(我相信保持尽可能小的归一化正值)仍然被编译器标记为'undefined',尽管float.h头文件是包括在内,这是相当令人不安的。之后,我在互联网上搜索了最小的归一化非零32位浮点值,并尝试以各种方式划分它们;然而我的系统似乎仍然以相同的格式表示它,似乎完全避免了下溢。

我知道我要求故意造成错误并准确表示它似乎相当牵强,但这是出于教育目的。

我的系统将浮点数处理为32位,加倍为64位,长两倍为128位。不妨提一下。

问题是;如何使用float,double和long double类型创建一个下溢并在输出中表示它,因此它明显是一个下溢错误?

除了答案之外,还将非常感谢任何有关解释浮点下溢的帮助。我对C和整个编程都很陌生。

谢谢,

GS

0 个答案:

没有答案
相关问题