c++ - C++ 标准中是否有关于精度和范围的浮点要求
问题描述
C++ 标准做出以下声明:
[basic.fundamental]:共有三种浮点类型:
float
、double
和long double
。double 类型提供的精度至少与 float 一样,long double 类型提供的精度至少与 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++ 标准不想做出任何声明 afloat
或应该最低限度是什么。但是,C 标准的最后引用点引用。然而,这定义了对精度和范围浮点数的最低要求。double
long double
<float.h>
问题:[cfloat.syn]中的语句是否暗示定义了相同的宏并且具有相同的含义。或者它是否更进一步,也意味着遵循 C 标准中定义的最低要求?
365 以下列表中给出的值应替换为常量表达式,其具有在幅度(绝对值)上大于或等于所示值的实现定义值,并带有相同的符号:
...
FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 ...
相关问题:
解决方案
推荐阅读
- rust - 如何重启一个底层节点
- javascript - VSCODE 无法识别标记语料库的 .env* 文件,也无法识别 .env.local.* 文件
- python-3.x - train 函数的 Chatterbot 模块中使用什么图形数据结构?
- python-3.x - XGboost 与 SKlearn RandomseachCV 一起使用时会出现目标函数错误
- c - C:如何获取给定单元格,行长和列长的矩阵的行和列
- python - 如何在不使用索引和切片的情况下访问嵌套列表中的值?
- javascript - jQuery $(“.class”).click(); 对于多个元素有效但在最后一个元素之前不存储检查值
- swift - 如何从 URL 加载 SVG 文件并将其用作 UIImage?
- windows - 将 Ctrl + + (Ctrl+Plus) 发送到 Windows 应用程序
- android - 如何将颜色从一个 Composable 传递到另一个?