在标准中,使用四精度浮点格式IEEE754
的最小严格正(次正规)值是 2 −16493 ≈ 10 −4965 。为什么 GCC 拒绝任何低于 10 -4949 的东西?我正在寻找对可能发生的不同事情的解释,这些事情将限制确定为 10 -4949而不是 10 -4965。
#include <stdio.h>
void prt_ldbl(long double decker) {
unsigned char * desmond = (unsigned char *) & decker;
int i;
for (i = 0; i < sizeof (decker); i++) {
printf ("%02X ", desmond[i]);
}
printf ("\n");
}
int main()
{
long double x = 1e-4955L;
prt_ldbl(x);
}
我正在在线使用 GNU GCC 4.8.1 版- 不确定它在哪个架构上运行(我意识到这可能是罪魁祸首)。请随时发布您对不同架构的发现。