Интересное наблюдение с BitConverter.GetBytes () в Compact Framework - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь преобразовать значение с плавающей точкой в ​​байтовый массив, используя метод BitConverter.GetBytes (...). Я столкнулся с одной интересной проблемой. Рассмотрим следующий код -

float f = 0.0;
byte[] bytes = BitConverter.GetBytes(f);
for (int j = 0; j < bytes.Length; j++)
{
     Trace.Write(bytes [j] + " ");
} 

Выше преобразование возвращает массив из 4 байтов, который я печатаю на консоли. Тем не менее, я заметил, что иногда вывод 4 байтов равен {0 0 0 128} вместо {0 0 0 0}.

Любая помощь?

Спасибо, Omky

1 Ответ

2 голосов
/ 14 марта 2012

Как написано здесь http://en.wikipedia.org/wiki/Signed_zero

Стандарт IEEE 754 для арифметики с плавающей запятой (в настоящее время используется большинством компьютеров и языков программирования, поддерживающих числа с плавающей запятой) требует +0 и -0

То, что вы нашли, это отрицательный ноль.

...