首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“符合标准的编译器可以选择不实现非规范化浮点数”的意义是什么?

“符合标准的编译器可以选择不实现非规范化浮点数”的意义是什么?
EN

Stack Overflow用户
提问于 2013-04-29 13:00:27
回答 1查看 241关注 0票数 1

ISO/IEC 9899:2011 第5.2.4.2.2节 (p48)说:

存在或不存在低于法线数的特征是FLT_HAS_SUBNORMDBL_HAS_SUBNORM,和LDBL_HAS_SUBNORM:的实现定义值。 -1不确定 0不存在(类型不支持低于正常数) 1表示(类型支持低于正常数)

怎么回事!那么,在某些平台上,我不能编写double d = 33.3?或者编译器会自动将其转换为333E-1?非归一化浮点数的存在或不存在的实际意义是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 13:52:53

低于正常值的数字是-FLT_MINFLT_MIN (float类型)和-DBL_MINDBL_MIN (double类型)之间的非零浮点数。常量FLT_MIN通常是1.17549435E-38F,即。如果您只使用浮点数进行少量编程,您可能从未遇到过低于正常值的数字

在使用FLT_HAS_SUBNORM == 0的编译平台上,只有数字+0。还有-0。在-FLT_MINFLT_MIN之间。

低于正常的数字通常在软件中处理(因为它们有特殊的行为,而且不经常发生)。一个根本不处理这些问题的原因是为了避免它们发生时可能出现的经济放缓。这在实时环境中可能很重要。

下一代英特尔桌面处理器(还是当前的?)将处理硬件中的异常。

次正规数的概念与符号33.3333E-1无关,它们表示相同的double值。

在IEEE754中,异常的合理性和标准化的历史可以在这些追忆中找到,由Kahan在“渐进式底流”下进行。

编辑:

我找不到英特尔在下一代处理器中处理硬件异常的来源,但我为Nvidia的费米平台已经这么做了找到了一个。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16279282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档