当我在 32 位和 64 位环境下运行我的应用程序时,双倍大小有区别吗?
如果我没记错的话,32 位环境中的双精度将在 0 之后占用 16 位,而 64 位环境中的双精度将占用 32 位,对吗?
不,IEEE 754 双精度浮点数始终为 64 位。同样,单精度float
始终是 32 位。
如果您的问题是关于 C# 和/或 .NET(如您的标签所示),那么所有数据类型的大小都是固定的,与您的系统架构无关。这与 Java 相同,但与类型大小因平台而异的 C 和 C++ 不同。
在 C 和 C++ 的不同架构上,整数类型通常具有不同的大小。例如,int
在 16 位 DOS 中是 16 位宽,在 Win32 中是 32 位宽。然而,IEEE 754 标准在浮点计算方面如此普遍,以至于在现实世界中您会发现的任何系统上,其大小float
并double
没有变化——20年前double
是 64 位,今天也是。
在 c# 中,double 始终为 8 个字节(64 位)
它没有改变。
一个简单的检查方法是编写一个简单的控制台应用程序
Console.WriteLine(Double.MaxValue);
并编译为 x86 和 x64。