Интересное наблюдение с BitConverter.GetBytes () в компактной структуре
-
13-12-2019 - |
Вопрос
Я пытаюсь преобразовать значение поплавка в байтовый массив, используя метод 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
Что вы нашли, это отрицательный ноль.
Не связан с StackOverflow