- ベストアンサー
エクセルのIF関数で同じ値なのに答えが違う
質問させていただきます。 エクセルのIF関数とAND関数を使って数式を作ったのですが どうしてもうまくいかないので質問します。 ±0.005以内であれば良、それ以外は不良としたいので =IF(AND(-0.005<=A,A<=0.005),"良","不良") Aにはべつのセルで計算した値が入り A=(1000.0-999.9)/2000*100 この場合だとA=0.005なのに不良となります。 A=0.1/2000*100 これだと良となります。 同じ0.005なのになにが違うのでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
パソコンにおける演算誤差ですね ちなみに A1セルに A=(1000.0-999.9)/2000*100 A2セルに A=0.1/2000*100 といれて A3セルに =A1=A2 と入れると FALSE が帰ってきます。 =IF(AND(-0.005<=A,A<=0.005),"良","不良") の式を =IF(AND(-0.005<=ROUND(A,5),ROUND(A,5)<=0.005),"良","不良") と十分な小数点以下の桁数で四捨五入しましょう。
その他の回答 (3)
- misawajp
- ベストアンサー率24% (918/3743)
>同じ0.005なのにな・・・・・ これが勘違い ごく僅か異なり 同じにはなりません
お礼
回答ありがとうございました。 エクセルにも色々と欠点があったんですね^^;
- aokii
- ベストアンサー率23% (5210/22062)
パソコンの計算誤差です。 (1000.0-999.9)/2000*100 =0.005000000000000000000000 0.1/2000*100 =0.005000000000001140000000
お礼
回答ありがとうございます。 いったいどこから114がでてくるのやら・・・
Excel、小数点の計算は苦手なんです。 エクセル奇譚 ~ 誤差アラカルト ~ http://hp.vector.co.jp/authors/VA016119/kitan011.html 日経PC21 / 小数計算で発生する「誤差」 - 単純な計算の答えが合わない理由 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml
お礼
回答ありがとうございます。 小数点の計算は苦手だったんですか・・・ 参考資料ありがとうございます。
お礼
回答ありがとうございます。 対処方法も教えていただきありがとうございました! 無事解決しました。