- ベストアンサー
EXCEL君の小数点計算ミス
初めまして。皆様の知識をお借りしたく思います。 題記の通りなのですがEXCELで小数点の計算が明らかに違うのです。 ( 107.60 - 107 = 0.6 ) のはずですよね? しかし( 0.59999...40000000 )という値を返してきました。以前雑誌でビット操作がどうのこうのとありましたが、とりあえず値を強制的に繰り上げたく思っております。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
コンピュータの仕組み上、どうしても計算誤差は出るんですよね・・・ ROUND関数などを使って下さい。
その他の回答 (3)
- ng001
- ベストアンサー率45% (105/232)
手元にある Office 97 と 2003 の両方で試してみましたが再現されませんでした。 しかし、こういう現象は私も以前に経験したことがあります。まだ Basic を使って利息計算のプログラムを作成していたときに、 INT 関数を使うとご指摘のような現象が現れることがありました。どのような場合に再現されるのか規則性が確認できなかったので、プログラムのなかで利息額に影響を与えない小さな数字(0.0000000001のような)を足した上でINT関数を使っていました。 同じ現象をEXCELでも経験したことがあります。Office 95の時代に (1-0.7)*10-3 の答えは 0 が正解ですが、 0.00000000000000004440892 と表示されたことがあります。この式を今の97や2003のエクセルに入れて見ましたが再現されませんので、何らかの改善がされているのかも知れません。 原因は10進数と2進数の変換時の誤差だそうです。コンピューターは電子計算機とも呼ばれますが、実は計算が苦手なのです。とくに小数点の入った計算はトラブルのもとで、厳密な計算をするときはこの点に気をつけなければならないようです。 コンピューターにはあまり詳しくありませんが、同じ経験をしたものとして投稿しました。
お礼
パソコン君はなんでも完璧ではないのですね。 なんだか親近感みたいなものを感じました(笑 ご説明ありがとうございました!!
- hakone
- ベストアンサー率54% (40/73)
こんにちは。 EXCELだけに限らず、コンピュータが2進法を使って いるために発生する小数誤差で、必ずあるものと思って ください。 とりあえず、小数点によっては、 0.600000000000000010000 の様に、少し大きくなってしまう場合もあるので、 =ROUND(107.6 - 107,1) と四捨五入で計算してはいかがでしょうか?
お礼
忘れていましたROUND関数。 ありがとうございます。
- akadurawebisu
- ベストアンサー率23% (57/245)
0.5999…40000 と、表示されているセルを セルの書式設定で「標準」にすれば良いのでは? 的はずれだったらすいません。
お礼
実は試したのですがうまくいかなかったので… ご回答ありがとうございました!!
お礼
そうでした!ROUND関数でしたね☆ ありがとうございました!