Pergunta

Estou tentando converter um valor flutuante em uma matriz de bytes usando o método BitConverter.GetBytes(...).Me deparei com uma questão interessante.Considere o seguinte código -

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

A conversão acima retorna uma matriz de 4 bytes que estou imprimindo no console.No entanto, notei que às vezes a saída de 4 bytes é {0 0 0 128} em vez de {0 0 0 0}.

Qualquer ajuda?

Obrigado, Omky

Foi útil?

Solução

Como está escrito aqui http://en.wikipedia.org/wiki/Signed_zero

O padrão IEEE 754 para aritmética de ponto flutuante (atualmente usado pela maioria dos computadores e linguagens de programação que suportam números de ponto flutuante) requer +0 e -0

O que você encontrou é o zero negativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top