コンパイル済みの.NET DLLファイルに保存されているフロート/ダブルリテラルはどうですか?

重量:

私のアプリケーションは、すべてのマシン上のまったく同じ数値結果を出す必要があります。私はC#でのフロート/ダブル数学が確定的ではありませんが、どのようにリテラル値のバイナリ表現についてのことを理解できますか?

float x = 1.23f;

どのようにします1.23fコンパイルされたDLLファイルに保存できますか?32ビットのIEEE-754形式のフロートのバイナリ表現として?またはターゲット・マシン(非決定論の電位源)にジッタIEEE-754浮動小数点への変換が必要になりますいくつかの中間表現として?

C#での浮動小数点演算が確定的でない理由を私は理解しています。私はリテラルのバイナリ表現が決定的であるかどうかだけ求めています。してください、一般的にポイント決定論を浮動についてノーの答え。

マシュー・ワトソン:

これらは、IEEE 754形式として保存されます。

あなたは、生成されたコードを逆アセンブルするIldasm.exeをを使用し、バイナリ値を検査することでこれを確認することができます。

例えば、float x = 1.23f;生成されます。

IL_0000:  /* 22   | A4709D3F         */ ldc.r4     1.23

(これはIntelプラットフォーム上のリトルエンディアン形式で格納されていることに注意してください。)

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=391891&siteId=1