C ++标准中是否有关于精度和范围的浮点要求

问题描述

C ++标准做出以下陈述:

[basic.fundamental]:共有三种浮点类型:floatdoublelong 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 ++标准不想发表任何声明,floatdoublelong 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 (将#修改为@)