2012年05月23日

やっぱり怖い演算誤差

久しぶりに、というかまたしても、このブログのタイトルにふさわしいネタです(^^;)。

そろそろ次の号も出る頃ですが、「日経PC21」の2012年6月号に掲載された「エクセル数式クイズ」の記事で、実はまた少々やらかしてしまいました。
カラオケの開始時刻と終了時刻の差が必ず30分単位になるという前提で、利用時間を30分を1とする数値に換算して、それに人数と30分当たりの料金を掛けて利用料金の合計を求めるという問題なのですが、問題自体ではなく、その解答・解説記事にまずい部分がありました。

実際の料金計算では当然ちょうど30分になるということはまずないので、30分未満の端数に対応できるようROUNDUP関数で切り上げる、という解説を付けました。
紹介した数式は、論理的には間違っていないはずなのですが、実際には利用時間がちょうど30分単位になった場合、演算誤差によって、1単位分切り上げられてしまう可能性がある……ということに、結構後になってから気が付きました。
たとえば利用時間がちょうど1時間30分だった場合、料金が2時間分として計算されてしまう可能性がある、ということです。

記事の中ではオマケ的な部分ですし、演算誤差やその対策について詳しく説明している余裕もありませんでしたが、それにしてももうちょっと誤差の出にくい数式にはできたんじゃないのか(それはそれで、紹介している数式よりは長くなり、その説明も必要になっただろうと思いますが)、と深く反省しています。
posted by 土屋和人 at 09:08| Comment(0) | TrackBack(0) | Excel