Pythonにおける浮動小数点は、JavaやRubyと同じくIEEE-754 double precision (倍精度浮動小数点)となっています。
# File: floatsample.py
x=1.0
y=2.0
z=3.0
print(x/y)
print((x/y)*z)
## 浮動小数点の精度 IEEE-754 double precision
print(x/z)浮動小数点は計算機の中で近似計算をします。そのため、直感とは違う値になる場合があります。
pythonで0.1+0.2を実行すると直感的には0.3になるはずですが、実際に実行してみると端数が現れます。これは計算機内部での近似値で保持しているためです。
## 値は 0.30000000000000004 になる
print(0.1+0.2)整数クラスは大きな整数でも使用できましたが、浮動小数点で任意の精度を扱いたい時は別のクラスが必要となります。次のコードはライブラリbigfloatを使って多倍長浮動小数点を計算する例です。通常の精度(倍精度浮動小数点)で平方根を計算して出力し、次にbigfloatで精度を8092bitまで拡張して平方根を計算して出力しています。ライブラリbigfloatを使うには事前にpipを使ってライブラリをインストールする必要があります。
from bigfloat import *
print (sqrt(9+4))
with precision(8092):
print (sqrt(9+4))ソースコード資料に含まれるコード:
# 多倍長浮動小数点
# pip install bigfloat
# GNU MPFR is required
# https://www.mpfr.org/
# https://pypi.org/project/bigfloat/
#
#from bigfloat import *
#print (sqrt(9+4))
#with precision(8092):
# print (sqrt(9+4))