Excelでおかしな計算結果になった問題の正解値を求める
小清水 (@curekoshimizu) です。
以前紹介した記事に
がありました。この内容はざっくりいいますと
の場合の
の値を Excel で計算すると 1.17260394...
真の解は -0.827396...
であると紹介しました。
正しい結果の計算方法を載せなかったために
正しい結果 を信じてくれない人がいましたので、
その計算方法を載せます。
どうやって計算する?
浮動小数点数で計算したのが間違いです。
この演算の登場したのはすべて 有理数のみ であることから
今回の場合、本当に正確に計算結果を求めたいのであれば
有理数ですべて計算すればいい のです。
当然といえば当然です。
計算してみよう
python の 有理数ライブラリを使って計算するのが簡単です。
#!/usr/bin/env python from fractions import Fraction a = Fraction(77617) b = Fraction(33096) ret = Fraction(333.75)* b*b*b*b*b*b + a*a*(Fraction(11) * a*a * b*b -b*b*b*b*b*b -Fraction(121)*b*b*b*b-Fraction(2)) + Fraction(5.5)*b*b*b*b*b*b*b*b + a/(2*b) print ret print float(ret)
この計算結果は
-54767/66192 -0.827396059947
なので有理数
が正解値なのがわかります。
明らかに 負の数 なのに Excel は正の数 を返してきたわけですが、
これで Excel の計算結果に不安 を感じてもらえたでしょうか?
短い記事でしたが以上です。