![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.2ベストアンサー
- 回答日時:
こんばんは。
>なぜでしょうか?
「浮動小数点誤差丸め」や「IEEE 754」の問題だとか言うよりも、本来は、Excelの欠陥だと思います。何社か表計算の開発会社が、この問題に対処したのにも関わらず、Microsoft は、この問題を放置したのです。簡単に言うと、表計算の代入値の数値を、倍精度浮動小数点型(Double) をそのまま使ってしまったのが原因です。Excelは、後発だけに、パテントの問題が関係したのかもしれません。かつては、IBMの傘下にいた時代には、Microsoft 社もそれに対応はしていたのですが、Windows時代になってやめてしまいました。
決して、その前にも浮動小数点誤差がなかったとは言わないのですが、今よりも軽微でした。
元の数値の
((143.84/2)-0.225-75) の部分が、実際の計算よりも少ないわけです。
-3.30499999999999
となっています。
ですから、小数点を固定して、例えば、小数点が入って、「ブレ」そうな部分を、FIXED で囲ってあげます。
=FIXED(75-(143.84/2),2)+FIXED((0.45/2)+0.05,3)
=FIXED((143.84/2)-0.225-75,3)*-1+FIXED(0.05,2)
このように、計算すれば正しく出てきます。
これを「小数点固定法」と呼んでいますが、必要な桁の部分までの表示から、数値を求め、それ以下は、切り捨ててしまうという考え方です。INT() や、ROUNDDOWN() や TRUNC() 関数とは考え方が違います。
他にも、全部整数にして計算する「整数変換法」があります。
=(75*100-(143.84*100/2)+(0.45*100/2))/100+0.05
=((143.84*100/2)-0.225*100-75*100)/100*-1+0.05
他には、ROUND 関数や小数点を足して修正することもありますが、概して、これは、小数点を含む場合には、誤差が出そうだと勘を働かせるしかありません。求める桁の範囲をくくるという考え方をすれば、問題は減ります。
No.3
- 回答日時:
ダブり回答ですが
小数点以下14桁にすると両者の違いがみえる。
3.35500000000000
3.35499999999999
これを小数点以下2桁で「表示」すると、小数点以下3桁目で四捨五入し
3.36
3.35
となった。これEXCEL式。
小数点以下3桁なら両者とも
3.355
No.2さんの解説でナンデ?がはっきりした。この場でお礼をいいます。
No.1
- 回答日時:
演算誤差のためです。
演算誤差はURLを参考にしてください。ちなみに、小数点以下の桁数を大きく(14以上)すると、
Excelの計算結果としての数値が表示されるハズです。
これを小数点以下の桁数を2桁として、四捨五入するため、
答えが違ってきます。
参考URL:http://pc.nikkeibp.co.jp/pc21/special/gosa/index …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Excel(エクセル) 電卓は正しいのに エクセルで計算させると間違った答えです。なぜ? 7 2022/08/11 07:04
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセルの「セル書式」の「表示形式」で 2 2022/08/07 16:44
- Excel(エクセル) 1から9まで表示するのに必要なボタン 1 2023/02/05 19:06
- Excel(エクセル) 分数をエクセルに入れる計算式について 4 2022/05/13 09:14
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- 会計ソフト・業務用ソフト エクセルについて 1 2022/06/15 17:39
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
O(n log n)について2
-
VB.net Double と...
-
Log関数に関する質問
-
c languageで 簡単な質問があ...
-
10進数での「25」が2進数では「...
-
”/”を使わずに割り算したいんで...
-
0.1の10000回の累積
-
H8/3664FのA/D変換について
-
C言語でセルオートマトンを作成...
-
ftoa関数の作成
-
EXCELの関数"STDEV(標準偏差)"...
-
16進数 加算 減算 C言語
-
色の判定
-
【C++】double の計算結果がお...
-
ExcelでPC(パソコン)によって...
-
符号付整数の演算結果を答えよ ...
-
距離から緯度経度を求める方法
-
浮動小数点演算を固定小数点演...
-
シンプソンの法則について
-
100桁の計算ができなくて困って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
16進数 加算 減算 C言語
-
c languageで 簡単な質問があ...
-
”/”を使わずに割り算したいんで...
-
VB.net Double と...
-
三菱シーケンサ(Aシリーズ)で...
-
ExcelのINT関数の計算結果がお...
-
有効数字について 以前質問をし...
-
ExcelでPC(パソコン)によって...
-
除算を使わずに10で割りたい。
-
EXCELの関数"STDEV(標準偏差)"...
-
floatの有効桁数
-
VBAでミリ秒まで出力する方法
-
2進数の足し算(C言語)
-
100桁の計算ができなくて困って...
-
VB6.0での小数点の扱いについて
-
VBAでの割り算の余りの求め方
-
距離から緯度経度を求める方法
-
BCD・HEX・BINについて
-
コンピューターは指数関数をど...
おすすめ情報