decimalモジュールで浮動小数点数の丸め誤差対策を行う – 【Python】

4.0

decimalモジュールで浮動小数点数の丸め誤差対策を行う – 【Python】

Pythonで浮動小数点数の丸め誤差の対策はdecimalモジュールのDecimal関数で行うことが出来ます。decimalモジュールは組込モジュールになりますのでインストール不要です。

JavaだとBigDeicimalを使用するような感じです。

数値を指定したDecimalオブジェクト作成

Decimalオブジェクトを作成する際に数値を指定すると丸め誤差対策が出来ません。

シングルクォーテーションで囲んで文字列にする必要があります。

from decimal import Decimal

a = Decimal(0.1)
b = Decimal(0.2)
sum = a + b
print(sum) # 0.3000000000000000166533453694

文字列を指定したDecimalオブジェクト作成

Decimalオブジェクトを作成する際に浮動小数点数を文字列にすると、丸め誤差対策をすることが出来ます。

from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
sum = a + b
print(sum) # 0.3
タイトルとURLをコピーしました