1

32ビットのfloatを使用してビット文字列を格納していると仮定します(尋ねないでください)。さらに、このfloatを(floatとして)ファイルにシリアル化し、シリアル化する前に、floatの10進表現にバンカーの丸めを使用するとします。フロートをプログラムに読み戻すと、システムは(当然のことながら)シリアル化された数値にできるだけ近い32ビットのフロートにそれを格納します。

シリアル化されたfloatが、読み戻されるfloatとバイナリで同等であることを保証するために、銀行家の丸め後、シリアル化されたfloatは、桁数でどの程度正確である必要がありますか?

4

1 に答える 1

2

10進数に変換し、IEEE 754単精度に戻すと元の値が生成されるようにするために、10進数の桁数が必要な場合は、この回答で回答します。これは、フォーマットと解釈を行うソフトウェアが優れていることを前提としています(言語標準では必要ない場合があります)。

特に、IEEE 754-2008標準の32ページの注1の5番目の項目は、その回答をサポートしています。シングルの場合は9桁、ダブルの場合は17桁です。

サポートされているバイナリ形式のbfから外部文字シーケンスに変換し、また元に戻すと、少なくともPmin(bf)の有効数字が指定され、2つの変換中に有効な丸め方向属性がある限り、元の数値のコピーが生成されます。最も近い丸め方向属性に丸めます。

于 2012-09-06T17:22:30.377 に答える