C浮点数表示法

时间:2012-03-20 11:59:55

标签: c gcc floating-point

我注意到这段代码编译但我不明白为什么:

int main() {
  double z = 0.000000000000001E-383DD;
}

但我不确定数字末尾的DD是什么意思。我看过标准,但没有提到这一点。

我从以下命令得到了这个号码:

$ gcc -dM -E - < /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
...

这可能是GCC扩展吗?

3 个答案:

答案 0 :(得分:7)

正确GCC extension表示64位decimal floating point文字。

其他扩展名后缀:

答案 1 :(得分:1)

是的,这是支持decimal float的GCC扩展。文字的类型为_Decimal64,但在分配给double变量时会被转换。

答案 2 :(得分:1)

也许它代表一个密集的64位十进制数?

This wikipedia article section看起来与定义的名称匹配,没有?