Python

トップ > チップス > Python
2013-12-03, python

Pythonで通貨計算

まず最初にプログラマが気をつけるべきは浮動小数点の丸め誤差でしょう。Pythonでは以下のような現象を簡単に再現することができます。

>>> 0.1 + 0.1 + 0.1 - 0.3
5.551115123125783e-17

5の-17乗なので、微々たる誤差のようですが、多数のトランザクションを重ねて誤差が蓄積してしまったり、切り上げや切り捨て演算をする際に差が整数値にまで顕在化してしまうことがあります。そこで利用するのがdecimalパッケージです。decimal型を使えば我々が普段計算するような10進数の演算を正しく再現することができます。

>>> from decimal import *
>>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
Decimal('0.0')

上記の算術演算だけでなく、例えば丸めの関数(round)なども、そのままDecimal型で利用することが出来ます。

>>> a = Decimal('1.55')
>>> round(a)
2.0
>>> round(a,1)
1.6

参考URLには様々な利用事例が載っています。

参考URL

この記事は役に立ちましたか?