質問: num1 + 1.0 print(x) #output -2.3 ``` ### 補足情報(FW/ツールのバージョンなど) Python 3.6
回答: floatは小数点をうまく表せずに近似値になる場合があります。計算を行わなければ それが表に出てくることはあまり無いのですが、計算時には誤差が発生します。 質問者さんが遭遇したのがまさにそれです。 そんなときのために、decimalが用意されているのでそちらを使用すると誤差が発生しません。 decimalについての公式ドキュメント ``` from decimal import * num = "-2.3" num1 = Decimal(num) x = num1 + Decimal("1.1") # 1.1を文字列表現にしていることに注意 print(x) # -1.2 # ダメな例1 num2 = Decimal(num) y = num2 + Decimal(1.1) # 1.1 がfloatになってしまっているので誤差が発生 print(y) # -1.199999999999999911182158030 ```