问题描述
C99 是否假设支持次正规数?
来自:
我得出的结论是 C99 支持次正规数。这个结论正确吗?
解决方法
C99 是否假设支持次正规数?
没有。 5.2.4.2.2。该语言定义了一个浮点数模型。然后该语言定义了该模型中的次正规浮点。然后建立一个接口,如何检测和处理次正规浮点数,以及如何在极端情况下处理它们 - 我的意思是,何时引发异常,何时不引发。
这并不意味着底层架构使用这个模型来表示浮点数。其目的是以 abstract 的方式编写标准,试图提供一个接口而不需要它应该如何实现。 Note 16:
- 浮点模型旨在阐明每个浮点特性的描述,并不要求实现的浮点算法完全相同。
如果实现实现 Annex F,则浮点类型与 IEC 60559 中描述的格式匹配,因此它将具有次正规数。这是推荐做法,但可选,使用宏检测 - 没有要求。
FP_SUBNORMAL 分类宏的存在
可能有更多 FP_[A-Z]*
宏由实现提供,用于额外的“浮点值种类”。
事实上,IEEE 754 需要支持次正规数
但 C 不需要 IEEE 754 支持。