问题描述
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 (将#修改为@)