36

当我在 32 位和 64 位环境下运行我的应用程序时,双倍大小有区别吗?

如果我没记错的话,32 位环境中的双精度将在 0 之后占用 16 位,而 64 位环境中的双精度将占用 32 位,对吗?

4

3 回答 3

71

不,IEEE 754 双精度浮点数始终为 64 位。同样,单精度float始终是 32 位。

如果您的问题是关于 C# 和/或 .NET(如您的标签所示),那么所有数据类型的大小都是固定的,与您的系统架构无关。这与 Java 相同,但与类型大小因平台而异的 C 和 C++ 不同。

在 C 和 C++ 的不同架构上,整数类型通常具有不同的大小。例如,int在 16 位 DOS 中是 16 位宽,在 Win32 中是 32 位宽。然而,IEEE 754 标准在浮点计算方面如此普遍,以至于在现实世界中您会发现的任何系统上,其大小floatdouble没有变化——20年前double是 64 位,今天也是。

于 2009-07-09T01:58:08.723 回答
10

在 c# 中,double 始终为 8 个字节(64 位)

于 2009-07-09T01:59:03.933 回答
7

它没有改变。

一个简单的检查方法是编写一个简单的控制台应用程序

Console.WriteLine(Double.MaxValue);

并编译为 x86 和 x64。

于 2009-07-09T02:07:45.700 回答