Интересное наблюдение с BitConverter.GetBytes () в компактной структуре

StackOverflow https://stackoverflow.com//questions/9702348

Вопрос

Я пытаюсь преобразовать значение поплавка в байтовый массив, используя метод 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}.

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

Спасибо, Омки

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top