標準では、IEEE754
厳密に正の (非正規) 値の最小値は、4 倍精度の浮動小数点形式を使用して2 −16493 ≈ 10 −4965です。GCC が 10 -4949未満のものを拒否するのはなぜですか? 制限を 10 -4965ではなく10 -4949に決定する、その下で起こっている可能性のあるさまざまなことの説明を探しています。
#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を使用しています。どのアーキテクチャで実行されているかわかりません (これが原因である可能性があります)。さまざまなアーキテクチャからの調査結果を自由に投稿してください。