long double 与 double:精度之谜
关于 long double 和 double 数据类型的大小和精度的争论可能会令人困惑,特别是在不同的操作系统上。虽然常见来源经常指出 long double 通常为 8 字节,但一些程序员在 32 位 Windows 系统上遇到过 12 字节的大小。
那么,为什么在某些情况下 long double 的大小为 12 字节呢?答案在于编译器实现的复杂性。根据 Wikipedia,x86 架构上的编译器通常将 long double 实现为硬件支持的 80 位扩展精度类型。然而,为了保持数据结构的完整性,他们可能会选择将其存储在 12 到 16 字节的容器中。
此外,编译器还可能选择使用 long double 来实现 128 位四倍精度格式。在这些情况下,long double 确实将其可能值的范围扩展到了 double 之外。但是,重要的是要认识到这种扩展精度实现不是通用标准,并且完全取决于编译器的配置。
总而言之,long double 的大小和精度可能会根据编译器和系统的不同而有所不同建筑学。不保证在所有情况下都能提供比 double 更宽的值范围。程序员应查阅编译器的文档来确定具体的实现细节,并在处理精度敏感的计算时做出明智的决定。
以上是为什么'long double”有时会占用12个字节?的详细内容。更多信息请关注PHP中文网其他相关文章!