- ベストアンサー
Excelの計算について
- Excelの計算に関する現象について理解できずに困っています。数式の結果が0にならず困っており、30桁までの表示が同じ数字になってしまいます。
- 具体的には、sheet1のA1とsheet2のA1を足して0になるはずなのに、実際には0になりません。さらに、特定の条件下で小数点12桁以下が発生する現象もあります。
- このような現象が起きる原因がわからず、困っています。Excelに詳しい方にお力をお貸しいただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
言葉で説明するよりも以下のような例がわかりよいかもしれません。 A1セルに「1:00」A2セルに「2:00」と入力し、この2つのセルを選択し、下方向にA4セルまでオートフィルします(このオートフィルされた数値はTREND関数で求めた数値と同じです)。 次にオートフィルで「4:00」と表示されている右のB4セルに「4:00」と手入力し、「=A4-B4」としてA4~C4セルの書式を数値にして30桁表示してみてください。 結果は、A4とB4セルの値は同じにもかかわらず、C4は0になりません(表示有効桁数以下に数字が保持されている)。 一方、「=A4=B4」で2つの値が等しいかどうかを判定すると「TRUE」が返り、引き算した数式でなければエクセルが丸め誤差を修正して同じ値と判定していることになります。
その他の回答 (2)
- TNK787
- ベストアンサー率17% (25/141)
エクセルの仕様ですあきらめてください (っていうかコンピューターはみなそうです) 少数以下は誤差があると割り切って使ってください そもそも コンピューターは2進数で計算しています ここにその誤差の秘密がありますが http://support.microsoft.com/default.aspx?scid=kb;ja;JP161234
お礼
ご回答ありがとうございます。 仕様なのですね。切り上げにして計算する事にしました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
エクセルで小数点のある数字(2進数で表示できない数字)を処理する場合、基本的に有効数字15桁目でまでしか表示できないので(30桁表示にしても意味がありません)、有効数字の桁で数字が丸められます。 したがってsheet1のA1セルで計算された値とsheet2のA1で計算された値が丸め方の方法などから実際は同じ値でない場合にご質問の状況が発生します(直接入力や加算の場合など一部のケースでは自動的に丸め誤差を修正する機能があります)。 実際sheet1のA1セルとsheet2のA1に入力された数式などを提示されれば、その原因を特定できると思います。
お礼
ご回答ありがとうございます。 非常にわかりやすかったです。 式は切り上げにして処理する事としました。