Domanda

Sto cercando di convertire un valore float in Array Byte utilizzando il metodo BitConverter.GetBytes (...).Ho trovato un problema interessante.Considera il codice successivo -

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

La conversione sopra ritorna la matrice di 4 byte che sto stampando sulla console.Tuttavia, ho notato che a volte l'output di 4 byte è {0 0 0 128} invece di {0 0 0 0}.

Qualsiasi aiuto?

Grazie, Omky

È stato utile?

Soluzione

Come scritto qui http://en.wikipedia.org/wiki/signed_zero

.
.

Lo standard IEEE 754 per il punto flottante aritmetico (attualmente utilizzato dalla maggior parte dei computer e dei linguaggi di programmazione che supporta i numeri del punto flottante) richiede sia +0 che -0

Quello che hai trovato è lo zero negativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top