Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 : Excel 2013)
計算結果の誤差
投稿日時: 19/10/09 18:56:20
投稿者: eco2019

お世話になります。
 
セルB3に
=34.3+47.5+15
 
セルC3に
=12.4+86.2
 
セルC6に
=+C3-B3
 
セルC6をコピーし、数値だけをセルC10に貼り付けた場合
1.8にならないといけないのですが、
1.80000000000001となっています。
 
オプションの計算方法は自動です。反復計算にチェックは入っています。
 
どうすればよいでしょうか。宜しくお願い致します。

回答
投稿日時: 19/10/09 22:38:59
投稿者: WinArrow
投稿者のウェブサイトに移動

エクセルの計算誤差によるものです。
 
セルC6と「1.8」(または、「1.8」の値のセル)とが不一致になるということですか?

回答
投稿日時: 19/10/10 08:26:00
投稿者: HAL

浮動小数点の演算誤差でEXCELだけの問題では有りません。
64bit OSでも改善されませんでした。

投稿日時: 19/10/10 08:45:15
投稿者: eco2019

WinArrow さんの引用:
エクセルの計算誤差によるものです。
 
セルC6と「1.8」(または、「1.8」の値のセル)とが不一致になるということですか?

 
そうですね。C6は、表示は1.8です。

投稿日時: 19/10/10 08:46:08
投稿者: eco2019

HAL さんの引用:
浮動小数点の演算誤差でEXCELだけの問題では有りません。
64bit OSでも改善されませんでした。

 
EXCELだけの問題ではないのですね。そういえば64bit OSかと思います。

回答
投稿日時: 19/10/10 16:00:39
投稿者: WinArrow
投稿者のウェブサイトに移動

ご存知と思いまうが、
どのようなコンピュータ(含む、電卓)でも
2進数で処理しています。
 人間は、数値を10進数で認識しているが、コンピュータは2進数に変換して処理し、
結果を10進数に変換して表示します。
そして、コンピュータで処理する桁数は、有限なので、計算時も変換時もどうして誤差が発生する可能性があります。
  
例えば、10÷3は、3.333333333333・・・・と無限に続きます。
しかし桁数が有限なのでどこかで丸めることになります。
Excelの場合は、15桁というう仕様になっていますが、計算時は、15桁以上で処理されます。
これを3倍すると、9.9999999999・・・・となり、元の10には戻りません。
ですから、どこかの桁で丸める必要があります。
この現象は、整数では発生しませんが、少数を扱う場合に発生します。
(特に時刻計算では、当たり前です)
これはコンピュータの宿命なのです。
  
前レスの、ヒントは、整数化すれば、誤差が出ないということから、100倍して整数化しています。
 整数化するにしても、ROUND関数で丸めても、桁数を決めるのは、仕組みを設計する人が判断することになります。(一般的な事務計算で使うのか、専門的な分野で使うのかで違ってきます)
  
決して、Excelだけの現象ではありません。
  
計算誤差
というようなキーワードで検索すると、たくさんのページにヒットします。
 是非参考にしてください。

回答
投稿日時: 19/10/10 18:38:47
投稿者: Mike

12.4、34.3、47.5、86.2 の何れも小数点以下第1までの計算なので、必要十分に小さな桁数である例えば小数点以下第5で四捨五入するのが私の常套手段です。
つまり、
C6: =ROUND(C3-B3,5)
とするのです。お試しください。

投稿日時: 19/10/10 23:37:37
投稿者: eco2019

WinArrowさん、 Mikeさん有難うございます。基本的なことも今まで気付いていませんでした。
今後は、ROUNDで処理していくように心掛けます。有難うございました。