フレッドは、特定の数値を引いたときに得た結果について、混乱と懸念を表明しました。たとえば、3799904.94から3809717.98を引くと、-9813.04が得られますが、代わりに-9813.04000000003が得られます。

フレッドが目撃しているのは、Excelの制限の成果物です。この問題は、最終的にはExcelが浮動小数点数でどのように機能するかに関係しています。コンピューターは、画面に表示される10進値としてではなく、2進値として数値を内部的に格納する必要があります。整数は比較的簡単に2進値として格納できます。小数点をミックスに入れると、非常に大きい数値または非常に小さい数値を格納することがより問題になります。Excelはそれらを絶対的な精度で格納することができません。代わりに、Excelは15桁(精度の限界)までの「おおよその」結果を提供します。したがって、最終的には-9813.04000000003のようになり、Excelで可能な15桁の精度がすべて含まれます。

浮動小数点数がExcelおよびコンピューターで一般的にどのように維持されるかについての完全な議論は、非常にすぐに非常に技術的になる可能性があります。このトピックに関する詳細情報が必要な場合は、調査を開始できる2つの場所を次に示します。

http://support.microsoft.com/kb/78113 http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

結論として、必要な「正確な」結果を必要な小数点以下の桁数まで取得する唯一の方法は、次のように数式でROUND関数を使用することです。

=ROUND(3799904.94 - 3809717.98, 2)

必要に応じて、次の手順に従って、すべての数式内で使用される精度を変更することもできます。

。 [ツール]メニューから[オプション]を選択します。 Excelに[オプション]ダイアログボックスが表示されます。

。 [計算]タブが表示されていることを確認します。 (図1を参照)

。 [表示される精度]チェックボックスがオンになっていることを確認します。

。 [OK]をクリックします。

現在、Excelは、通常維持している15桁の完全な精度で計算を行うのではなく、すべての計算で画面に表示される精度を使用します。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3354)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。