c++ - 长双 vs 双

标签 c++ floating-point long-double

我知道各种数据类型的大小可能会根据我所在的系统而变化。

我使用 XP 32 位,并使用 C++ 中的 sizeof() 运算符,似乎 long double 是 12 个字节,而 double是 8。

然而,大多数主要资料表明 long double 是 8 个字节,因此范围与 double 相同。

我怎么有 12 个字节?如果 long double 确实是 12 个字节,这不是也扩展了值的范围吗?或者长签名仅在值超出 double 范围时使用(编译器数字),因此超出 8 个字节?

最佳答案

引自 Wikipedia :

On the x86 architecture, most compilers implement long double as the 80-bit extended precision type supported by that hardware (sometimes stored as 12 or 16 bytes to maintain data structure .

Compilers may also use long double for a 128-bit quadruple precision format, which is currently implemented in software.

换句话说,是的,long double 可能能够存储比 double 更大范围的值。但这完全取决于编译器。

关于c++ - 长双 vs 双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454576/

相关文章:

c - 小于(<)float与c中if语句的比较

linux - 汇编浮点运算

c++ - 在现代 C++ 中比较 double/float 是否相等的现代实践

c++ - 检测嵌入式系统上的长双倍溢出

c++ - QTextEdit 中不可编辑的文本

c++ - GDI 屏幕截图,结果在不同的计算机上有所不同

c++ - WSAConnect() 与 ConnectEx()

c++ - C++中Main函数的参数

c - 在 C 上定义 LDBL_MAX/MIN

c++ - 机器 epsilon - C++ 中的 long double