前提
pythonの数値誤差についてわからないことが2点あります。初歩的な質問ですみません。
発生している問題・エラーメッセージ
- f(2)の結果が1でなく1.0の理由
- f(10)=1.0000000009となるが、f(10)とf(2)で誤差が生じる理由
の以上2点がわかりません。
該当のソースコード
def f(a)
return ((1/a+1)-1)*a
インデントがありませんよ
def文には最後コロンが必要です
pythonの数値型とその演算精度については以下
https://docs.python.org/ja/3/library/stdtypes.html#numeric-types-int-float-complex
丸め誤差についてはps_aux_grepさんが惜しいのですが、doubleなので普通は64bitです
https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
この実数表現は2進数で小数点以下を表すため、10進数の1/10だと2進数にしたときに割り切れない=循環小数になるため、表現誤差が生じます。詳細はググってください。
回答3件