EXCEL97で小数計算をすると誤差がでるのですが何故ですか?
A列に14.60を数値入力 
B列に13.90を数値入力 
C列に=B1-A1の数式をいれると-0.70となるはずなのにどういうわけか
-0.699999999999999と表示される。
小数点以下14桁目までは-0.70000000000000と表示されるが15桁目で上記のように表示される。
表面上はROUND関数などで処理できるのですが複数の数式を組み合わせて計算している時は-0.69999・・・の数値をもって計算される場合があり誤差がでる。
消費税や金利計算などで1円でも誤差がでると表計算の正確さが問われてしまう。
0.7の他にも 次の場合もでる
0.2のとき0.1999・・
0.3のとき0.2999・・・・
0.8のとき0.7999・・・・
これはEXCELのバグなのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは



 以下のページもご参考になるのでは?

Housaka's Home Page-エクセル奇譚
http://member.nifty.ne.jp/housaka/kitan01.html

Housaka's Home Page-エクセル奇譚 ~ 誤差アラカルト ~
http://member.nifty.ne.jp/housaka/kitan011.html

[XL97] 浮動小数点数値演算の結果に含まれる丸め誤差について
http://www.microsoft.com/japan/support/kb/articl …

[XL97] 数値を比較した結果が正しく返らないケースについて
http://www.microsoft.com/japan/support/kb/articl …

[XL97] 特定の小数部を持つ数値を入力した場合に誤差を生じる
http://www.microsoft.com/japan/support/kb/articl …

[XL] 浮動小数点の計算誤差と IEEE フォ-マット
http://www.microsoft.com/japan/support/kb/articl …

ROUND関数の結果を正常にするには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cg …

四捨五入するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cg …

入力規則が正しく判定されないんです
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cg …

計算結果がセルの表示と異なるのは?
http://www.moug.net/boards/exopr/questbbs.cgi?Sh …

参考URL:http://www2.odn.ne.jp/excel/
    • good
    • 0

これはEXCELに限らずパソコンで小数点の計算をするときには避けられない部分


ですね。
有効桁数を設定して計算するしかないでしょうね。小数点以下15桁使うような計算
は別の手段を使うべきだと思います。
EXCELのヘルプで「ワークシートとブックの仕様」というページを探してくださ
い。様々な制限事項が書かれています。

この回答への補足

ありがとうございました。EXCELのヘルプで「ワークシートとブックの仕様」を見てみました。いろいろな情報がありヘルプにこんなにたくさんの項目があるとは知りませんでした。
質問には小数点以下15桁の表現をしましたが実際小数点以下15桁使うような計算はしていません。
14.60-13.90=0.70は常に小数点以下3桁目を切り捨てるrounddown関数を使用していて0.69の表示がされたので計算違いが出ていると気が付いたのです。どうして0.70の表示にならなかったのか不思議に思い質問しました。
パソコンで小数点の計算をするときには避けられない部分では仕方ないですね

補足日時:2000/06/10 15:20
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで勝手に四捨五入されてしまいます。。。

 いつもお世話になっています。 さて、またまた急ぎなのでよろしくお願いします。

 エクセルで 出来高の数量入力をしているんですが、3.5と入力するのに
 エンターキーを押すと 4 になってしまいます。
 3.5 となるにはどうしたらいいでしょうか?

 いつも急ぎですみません。 よろしくお願いまします。

Aベストアンサー

数字の上で右クリックをし、「セルの書式設定」をクリックします・
そして、「数値」を選び、小数点以下の桁数を変更すればOKです^^

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html

QEXCEL SUM関数で合計値が違う場合

教えてください。
EXCELのSUM関数で合計値が違う場合があるのですが、
何が原因で起こるのでしょうか?
また、どうすれば直るのでしょうか?

Aベストアンサー

小数点以下0桁で書式設定(整数)にすると四捨五入されて表示されることが大きな原因と思います。
A1:0.8 -> 表示は 1
A2:0.6 -> 表示は 1
sum(a1:a2) -> 計算は 0.8+0.6=1.4 -> 表示は 1

Excelの設定(オプションー計算方法)で、表示桁数で計算するをチェックすると sum(a1:a2) は 2 になりますが、他所で影響が出るかもしれないので、お勧めしません。

Qエクセルの小数点以下認識

エクセルは表計算ソフトなわけで、財務関数とかも入っているので利息の計算なども容易なのでしょうが、割り切れない数字を一体小数点以下何桁まで認識しているのじょうか。数値バーで表示されるレベルなのでしょうか。

Aベストアンサー

Excelの精度は15桁です。

> 割り切れない数字を一体小数点以下何桁まで認識しているのじょうか。

数値の全体で15桁です。
10000000÷3=3333333.33333333
1000÷3=333.333333333333
1÷3=0.333333333333333
0.00001÷3=0.00000333333333333333
浮動小数点という形式で数値を保持するので、小数点以下という考え方はなじみません。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル: セルの枠を超えて表示

エクセル初心者です。
文字列が(そのセルの右隣が空欄のときに)枠を超えて表示される場合と
枠内までしか表示されない場合とがあるのですが、
それらはどこで操作したら変更できるのでしょうか。

どなたかよろしくお願いいたします。。

Aベストアンサー

文字の入っているセルを右クリック
「セルの書式設定」→「配置」タブ→「横位置」を
「標準」か「左詰め」にすると,隣のセルまで文字がはみでると思いますが,
「繰り返し」にすると,文字がはみださなくなると思います。

また,
「横位置」の設定が「標準」のままであっても,
下の方にある「文字制御」の
「折り返して全体を表示する」か「縮小して表示する」
にチェックを入れてもはみださなくなりますが,見かけはかなり変わります。

QExcelで2つのファイルの違い(Diff)をとりたい

Excelでファイル名が同じで更新日付の異なる2つのファイルがあります。
この2つのファイルで内容が変わっている部分を知りたいのですが、良い方法はあるでしょうか?
(もしくは内容が変わっているかどうかだけでも知りたい)

比較が必要なファイルが大量にあるため、一つずつ見比べる時間が無く、困っています。

Aベストアンサー

使ってないのでお勧めはわかりませんが、こちらのフリーソフトを試してみては?
http://search.vector.co.jp/search?query=excel+%94%E4%8Ar

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qエクセルのセルに「=A13」と表示されて、困っています。。。

エクセルのセルに「=A13」と表示されて、困っています。。。
例:B13セルに、A13セルの値を表示させたい
1)B13セルで「=」とキーボード入力し、マウスでA13セルをクリック

2)するとB13セルに、値ではなく「=A13」と表示されてしまいます。

3)最初は、通常通り「値」が表示されていたのですが、たくさん同じような処理をしているうちに、途中から「値」ではなく、「=セル名」が表示されるようになってしまいました。何度か作り直しても、同じような現象が発生しています。

どうか、どなたか良いアドバイスをお願いします。。。!!!

Aベストアンサー

こんばんは。

それは、Excelの困った問題点ですね。もう、ずっと続いています。

一言でいうと、「文字列書式の参照」ということです。

A13 が、書式・文字列にしておいて、「=A13 」とすると、A13 の値が参照されないで、数式が自動的に文字化してしまうのです。オプションでも直りません。

まず、基本的には、「書式・文字列」は使わないことです。もしも、参照されるセルを「文字列」(ここでは、A13)したい場合は、

たとえば、そのセルを書式を標準にしておいて、

 '123

と「'」(プレフィックス-接頭辞)を付けてください。プレフィックスになると、印刷では、「'」は出てきません。見えるけれども、セルの中に閉じ込められてしまいます。

別のセルで、

=A13

とすれば、ちゃんと出るようになります。ただし、数式を入れたセルも、標準に戻してください。単に、数式を入れたセルだけを標準にしても、Enter を入れたりして、元の参照される側のセルの書式を標準に戻していないと、また、数式の表示に戻ってしまいます。

こんばんは。

それは、Excelの困った問題点ですね。もう、ずっと続いています。

一言でいうと、「文字列書式の参照」ということです。

A13 が、書式・文字列にしておいて、「=A13 」とすると、A13 の値が参照されないで、数式が自動的に文字化してしまうのです。オプションでも直りません。

まず、基本的には、「書式・文字列」は使わないことです。もしも、参照されるセルを「文字列」(ここでは、A13)したい場合は、

たとえば、そのセルを書式を標準にしておいて、

 '123

と「'」(プレフ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報