C ++,GCC编译器中浮点类型T的字段std :: numeric_limits <t> :: digits的值</t>

时间:2014-08-05 14:52:50

标签: c++ gcc floating-point ieee-754

我正在使用gcc编译器(Linux,gcc --version是4.8.2)进行c ++编程。我关注浮点类型std::numeric_limits<T> Tfloatdoublelong double)的static constexpr int digits模板专精。更具体地说,我感兴趣的是std::numeric_limits<T>的静态成员T对浮点类型digits的价值。

据我所知,在当前的C ++标准中,它表示std::numeric_limits<T>::digits的值是尾数中的基数位数。我为我的机器上的不同浮点类型打印了std::numeric_limits<T>::is_iec559的值(浮点类型根据字段T=float实现了IEEE754)并且我对结果感到有些惊讶:I.e。对于24,它说float

据我所知, Single 类型(即digits) - 根据IEEE754 - 有一个23位的尾数(浮点数的有效位数)(虽然有1个符号位和8位指数,总共32位)。那么为什么24设置为digitsdouble的{​​{1}}值为53而不是52(根据IEEE754, Double 的尾数中的位数)。

可能是一些微妙的(或不那么微妙的?)浮点问题,但我想知道。

0 个答案:

没有答案