3

Excel 2007 を使用してドキュメントを XML スプレッドシート 2003 形式で保存すると、奇妙な問題が発生します。

「0.58」などの数値をランダムに「0.57999999999999996」に変更するようです。

本当に奇妙なのは、Excel を使用しているときにこの問題を確認できないことです。これは、XML データをテキスト エディターから直接表示した場合にのみ確認できます。

誰もこれに遭遇したことがありますか?もしそうなら、何らかの修正または回避策はありますか?

4

3 に答える 3

4

Excel は、数値データを浮動小数点として格納します。小数点以下の数字 (小数部分) は概算です。回避策はありません。0.58 は、正確に 0.58 である浮動小数点数として表すことはできません。

その時点で XML ファイルをロードするときは、数値を浮動小数点に戻すか、できれば固定桁の 10 進クラス (例: C# の Decimal) に変換する必要があります。

于 2009-03-03T15:24:56.513 に答える
0

数値 0.58 は、0.57999999999999996 と同じ数値です。つまり、差は 0、またはさらに別の言い方をすれば、数値は等しいです。

「通常の」高校数学を使用している場合は、同意しないかもしれません。Excel はそうではなく、一般のコンピューターもそうではありません。それらは有限のビットセットを使用します。バイナリでの 0.58 の正確な表現は、無限のビット セットを使用するため、それらのビットの一部が失われます。

于 2009-03-03T15:46:41.327 に答える