首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C浮点数表示法

C浮点数表示法
EN

Stack Overflow用户
提问于 2012-03-20 19:59:55
回答 3查看 1.2K关注 0票数 2

我注意到这段代码可以编译,但我不知道为什么:

代码语言:javascript
复制
int main() {
  double z = 0.000000000000001E-383DD;
}

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

我从下面的命令中获得了这个数字:

代码语言:javascript
复制
$ gcc -dM -E - < /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
...

这会不会是GCC的延伸?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-20 20:03:02

对,它是一个指示64位 floating point文字的GCC extension

其他扩展名后缀:

  • Complex literals,,例如1.0i1.0j1.0fi等。这纯粹是一个GCC的扩展,标准的C99方式是使用宏I (1.0*I1.0f*I,etc.)
  • Additional floating point types,,它们纯粹是一个GCC的扩展:

代码语言:javascript
复制
- `1.0w` → `__float80` (80-bit binary floating point)
- `1.0q` → `__float128` (128-bit binary floating point)

基于提案的

  • Decimal floating point types

代码语言:javascript
复制
- `1.0df` → `_Decimal32` (32-bit decimal floating point)
- `1.0dd` → `_Decimal64` (64-bit decimal floating point)
- `1.0dl` → `_Decimal128` (128-bit decimal floating point)

基于提案的

  • Fixed-point types

代码语言:javascript
复制
- `0.5hr`, `0.5r`, `0.5ulr`, etc. → `_Fract` types (fixed point types with magnitude ≤ 1)
- `5.0hk`, `5.0k`, `5.0ulk`, etc. → `_Accum` types (fixed point types)

票数 7
EN

Stack Overflow用户

发布于 2012-03-20 20:02:28

是的,这是一个支持decimal float的GCC扩展。该文本的类型为_Decimal64,但在分配给double变量时会进行转换。

票数 1
EN

Stack Overflow用户

发布于 2012-03-20 20:04:06

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

This wikipedia article section看起来与定义的名称相匹配,不是吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9786338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档