[[20220207091657]] 『VLOOKUP関数 MATCH関数について』(タケポン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VLOOKUP関数 MATCH関数について』(タケポン)

VLOOKUP関数、MATCH関数の検索について

=3*0.3の値をVLOOKUP関数やMATCH関数で検索しても0.9に一致しません。ROUND関数を使って3*0.3の値を丸めると一致します。このことから0.3*3の値は浮動小数点演算誤差が生じているのかと考えたのですが、=3*0.3=0.9の論理式はtrueを返します。因みに=3*0.2ではこの問題は生じません

質問1 論理式上では一致する値がVLOOKUP 関数やMATCH関数では一致しないのはなぜでしょうか

質問2 VLOOKUP関数やMATCH関数で計算値を検索する場合、安全のためにROUND関数を使って丸めないといけないのでしょうか

< 使用 Excel:Excel2003、使用 OS:Windows10 >


 >このことから0.3*3の値は浮動小数点演算誤差が生じているのかと考えたのですが、
 正しい。

 >=3*0.3=0.9の論理式はtrueを返します。
 イコールの判定をどこまで細部を比較して行うかはマイクロソフトの仕様次第です。

  =3*0.3=0.9   これはTrueだが
  =3*0.3-0.9=0  これはFalse。数学的には矛盾するが、0と比較するときは特別らしい。

 >質問1 論理式上では一致する値がVLOOKUP 関数やMATCH関数では一致しないのはなぜでしょうか
 関数の仕様が、細部まで完全一致しないと合致とは看做さないものである、と理解するしかないです。

 >質問2 VLOOKUP関数やMATCH関数で計算値を検索する場合、安全のためにROUND関数を使って丸めないといけないのでしょうか
 うーん、ちょっと回答しにくい質問ですね。今回のケースではYESと言うしかないです。
 一般的には、小数値を計算して、大小比較するときは、常に小数演算誤差を念頭に入れて対処する必要がある、と言うことです。

(半平太) 2022/02/07(月) 10:10


ありがとうございました。自分でも予想していた回答で納得できました。小数点を含む計算をVLOOKUP関数やMATCH関数で検索するときはROUND関数で丸めなければ間違う場合もあるというのは、エクセル利用者に共通理解として広まっているとは思えません。MICROSOFTもその点はしっかり情報を広めてほしいものです。回答ありがとうございました。
(タケポン) 2022/02/07(月) 11:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.