在程序输出中出现下溢
我已经做了彻底的搜索,但似乎只能找到下溢的解释,以及它是如何工作的,而不是表示它的方式。
长话短说,我正在编写一个程序来测试整数溢出,浮点溢出(inf)和下溢 - 并使用printf函数输出这些条件的影响。 我已经在前两个方面取得了成功,但由于浮点下溢,似乎无法成功表示一个次正规数。 据我所知,根据系统处理条件的方式,我知道下溢的症状可能是输出中的数字丢失,或舍入为零。
在试图找到最低浮点值时,我查看了float.h头文件。 FLT_MIN出现为0.000000(因此在演示导致下溢的操作时不可行),DEC32_MIN(我认为它拥有尽可能最小的标准化正值)仍被编译器标记为'undefined',尽管float.h头文件存在包括在内,这相当令人不安。 之后,我搜索了互联网上最小的可能归一化的非零32位浮点值,尝试用各种方式对它们进行分割; 但是我的系统似乎仍然以相同的格式表现出来,似乎完全避免了下溢。
我知道,我要求故意引起错误并准确表示它,这似乎相当牵强,但这是出于教育目的。
我的系统处理浮点数为32位,双倍为64位,长双位为128位。 不妨提一下。
问题是; 我怎样才能创建一个float,double和long double类型的下溢,并在输出中表示它,因此它明显是一个下溢错误?
除了答案之外,任何有关解释浮点下溢的帮助都将非常值得赞赏。 我对C和整体编程颇为陌生。
谢谢,
GS
链接地址: http://www.djcxy.com/p/90305.html