如何解决C ++标准中是否有关于精度和范围的浮点要求
C ++标准做出以下陈述:
[basic.fundamental]::共有三种浮点类型:
float
,double
和long double
。 double类型至少提供与float一样的精度,long long类型提供至少与double一样高的精度。 float类型的值集是double类型的值集的子集; double类型的值集合是long double类型的值集合的子集。浮点类型的值表示形式是实现定义的。 [注:本文档对浮点运算的准确性没有任何要求;另请参阅[support.limits]。 —尾注]整数和浮点类型统称为算术类型。标准库模板std::numeric_limits
的专业化应为实现指定每种算术类型的最大值和最小值。[support.limits]:标头
<limits>
([limits.syn]),<climits>;
([climits.syn]和<cfloat>
( [cfloat.syn])提供了与实现相关的算术类型([basic.fundamental])的特征。[cfloat.syn]::头文件
<cfloat>
定义所有与C标准库头文件<float.h>
相同的宏,另请参见:ISO C 5.2.4.2.2
这似乎都指向一个事实,即C ++标准不想发表任何声明,float
,double
或long double
的最低要求。但是,最后引号引用的是C标准的<float.h>
。但是,这对精度和范围浮点数定义了最低要求。
问题::[cfloat.syn]中的语句是否暗示定义了相同的宏且具有相同的含义。还是向前迈进了一步,也意味着遵循了C标准中定义的最低要求?
5.2.4.2.2 Characteristics of floating types:
365下列列表中给出的值应替换为常量表达式,其实现定义的值的大小(绝对值)应大于或等于所示的值,并带有相同的符号:
...
FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 ...
相关问题:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。