1

BitConverter.GetBytes(...) メソッドを使用して float 値をバイト配列に変換しようとしています。1 つの興味深い問題に出くわしました。次のコードを検討してください -

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 0} ではなく {0 0 0 128} になる場合があることに気付きました。

何か助けはありますか?

ありがとう、オムキー

4

1 に答える 1

2

ここに書かれているようにhttp://en.wikipedia.org/wiki/Signed_zero

浮動小数点演算の IEEE 754 標準 (現在、浮動小数点数をサポートするほとんどのコンピューターとプログラミング言語で使用されています) では、+0 と -0 の両方が必要です。

あなたが見つけたのは負のゼロです。

于 2012-03-14T12:57:53.590 に答える