アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めての質問です。
Excelでパーセントの差によって、TUREかFALSEを返すようにしていますが、判定する数値によって
誤った結果が返されます。
回避方法をご存じの方がいらっしゃいましたらお願いします。
現象
正しい判定の場合
A1に70%を設定、A2に72%を設定、A3に「=(A2-A1)>=2%」を設定。
→2%の差なので、正常にTRUEがA3に返されます。
誤った判定の場合
A1に80%を設定、A2に82%を設定、A3に「=(A2-A1)>=2%」を設定。
→2%の差なのに、FALSEがA3に返されます。
 これを正常にTRUEを返す方法はありますでしょうか。

あと、1%から100%までためしたところ、A1,A2が以下の組み合わせの場合にもFLASEが返されました。
55%,57%
56%,58%
67%,69%
68%,70%
81%,83%
92%,94%
93%,95%
どうぞよろしくお願いいたします。

A 回答 (2件)

2進数で計算しているため、小数点以下の数値の計算には誤差が含まれます。


これを微小誤差と呼びます。

例えば、質問の例では、
 0.57-0.55=0.02 
になるのが正解なのですが、2進数で計算するため Excel では
 0.57-0.55=0.01999999999999990
となるのです。

ちなみに小数点以下17桁目が 0 なのは、スプレッドシート型の表計算では16桁までしか値を扱えないため、小数点以下17桁目以降は計算されず 0 になるのです。

前の回答者さんも仰るように桁を丸めたうえで評価することを薦めます。

・・・
添付した図では
小数点以下16桁では正しく表示されないので、
小数点以下15桁に値を丸めた例です。


・・・余談・・・

そんなわけで金融関係のお仕事でExcelってあまり使われません。
「Excel の判定式で正しく判定されない」の回答画像2
    • good
    • 0
この回答へのお礼

具体的な図で示していただき、ありがとうございます。
ご回答いただいた通り、小数点15桁でROUNDすると正しく判定されるようになりました。
大変助かりました。

お礼日時:2022/05/31 17:12

おそらく浮動小数点の誤差が原因ですので、業務上問題のない精度にまで四捨五入してから比較することをお勧めします。



参考)
https://support.microsoft.com/ja-jp/office/round …
    • good
    • 0
この回答へのお礼

早々のご回答、ありがとうございます。
後から回答頂いた「銀鱗」さんの情報とともにROUND設定すると正しく判定されるようになりました。

お礼日時:2022/05/31 17:14

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