Двухбайтовый размер в 32-битной и 64-битной ОС - PullRequest
33 голосов
/ 09 июля 2009

Есть ли разница в размере double при запуске приложения в 32- и 64-разрядной среде?

Если я не ошибаюсь, двойная в 32-битной среде займет 16 цифр после 0, тогда как двойная в 64-битной будет 32-битной, я прав?

Ответы [ 3 ]

63 голосов
/ 09 июля 2009

Нет, IEEE 754 число с плавающей запятой двойной точности всегда равно 64 битам. Точно так же float с одинарной точностью всегда равен 32 битам.

Если ваш вопрос касается конкретно C # и / или .NET (как указывал бы ваш тег), все размеров типов данных являются фиксированными, независимо от архитектуры вашей системы. Это то же самое, что и Java, но отличается от C и C ++, где размеры шрифтов варьируются от платформы к платформе.

Обычно интегральные типы имеют разные размеры на разных архитектурах в C и C ++. Например, int был 16 бит в 16-битном DOS и 32 бита в Win32. Однако стандарт IEEE 754 настолько повсеместен для вычислений с плавающей запятой, что размеры float и double do not варьируются в любой системе, которую вы найдете в реальном мире - 20 лет назад double было 64 бита, и это сегодня.

10 голосов
/ 09 июля 2009

В c # double всегда 8 байтов (64 бита)

8 голосов
/ 09 июля 2009

Не меняется.

Простой способ проверить это - написать простое консольное приложение с

Console.WriteLine(Double.MaxValue);

и компиляция в x86 и x64.

...