1

重複の可能性:
浮動小数点の不正確な例

私はxlsxファイルの解析に取り組んでおり、この動作に遭遇しました。問題を再現する手順を説明せずに説明する方法がわかりません。

 1.  Create new blank Excel file (xlsx)
 2.  Type '8.8' into cell A1
 3.  Save file
 4.  Close Excel, rename file with .zip extension and open
 5.  Find sheet1.xml and open
 6.  Value for 8.8 in A1 will be saved as '8.8000000000000007'

これは私にとって問題を引き起こします。Excelファイルを解析するときに、「8.8000000000000007」ではなく「8.8」と入力された値を取得したいからです。

Excelがこれを行う理由を誰かが知っていますか?

編集:そして、Excelは、そのファイルを開いて「8.8」のみを表示し、「8.8000000000000007」は表示しないことをどのように認識しますか?Excelは特定の小数点以下の桁数で丸められますか?

4

1 に答える 1

3

有限の10進数表現を持つ浮動小数点数は、必ずしも有限の2進数表現を持つとは限りません。変換は不可逆です。

8.8は分母(5)が2の累乗ではない分数であるため、その2進浮動小数点表現は無限大です。アプリケーションがデータを格納するために使用する基になるデータ型(この場合はExcel)は有限の精度であるため、表現は切り捨てられます。

于 2012-10-12T15:50:22.537 に答える