0

我已经进行了彻底的搜索,但似乎只找到了关于下溢是什么以及它是如何工作的解释,而不是表示它的方法。

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

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

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

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

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

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

谢谢,

GS

4

0 回答 0