c++ - double 的有效小数位数?

标签 c++ c floating-point language-lawyer

C/C++ 标准对 double 的最小有效十进制数字有什么保证? ?

C++ 标准实际上在 § 18.3.2.4/10 的脚注中说这相当于 DBL_DIG如 C 标准中定义的那样。但是我在 C 标准中找不到任何关于最小值的信息。

那么,以下其中一项的最小值是多少?

  • std::numeric_limits<double>::digits10
  • DBL_MANT_DIG编辑:不,DBL_DIG

最佳答案

你不会在 C++ 标准中找到它,因为 C++ 在这个标准上遵循 C 标准。对于十进制数字,最小值为:

FLT_DIG   6
DBL_DIG  10
LDBL_DIG 10

因此,float 为 6 位,doublelong double 为 10。 (这是保证从 text 到 type 并返回的转换将产生相同值的位数。)

请注意,DBL_MANT_DIG 对应于基数中的位数,因此通常是二进制位数,而不是十进制位数。

关于c++ - double 的有效小数位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225786/

相关文章:

c - C中的 "x"和 "&x[0]"有什么区别吗?

C++ 可移植浮点位表示?

c++ - CUDA 中的 float(0.0) 与 0.0f

c++ - 模板代码无法编译(延迟查找)

c++ - push_back 到 HashMap 类中的 vector

.net - C++与虚拟机语言在高频财务中的性能

ruby - `-' :String 的未定义方法 "100"

C++ 简单链表超出范围的变量

C 中 memset 函数的复杂性

硬币找零算法C