浮動小数点型についての情報は、numpyのfinfo
関数を使用して見つけることができます。下に示すように、float16
の最大値は65504.0であるため、値の範囲(-100.0〜2048.0)が適合します。問題は、イプシロン(eps
とepsneg
以下)が大きすぎて、2つの別個の値が同じものとして扱われることがあります。 float32
では、イプシロン値はずっと小さく、より高い精度で値を表現することができます。
> import numpy as np
> print(np.finfo(np.float16))
Machine parameters for float16
---------------------------------------------------------------
precision = 3 resolution = 1.00040e-03
machep = -10 eps = 9.76562e-04
negep = -11 epsneg = 4.88281e-04
minexp = -14 tiny = 6.10352e-05
maxexp = 16 max = 6.55040e+04
nexp = 5 min = -max
---------------------------------------------------------------
> print(np.finfo(np.float32))
Machine parameters for float32
---------------------------------------------------------------
precision = 6 resolution = 1.0000000e-06
machep = -23 eps = 1.1920929e-07
negep = -24 epsneg = 5.9604645e-08
minexp = -126 tiny = 1.1754944e-38
maxexp = 128 max = 3.4028235e+38
nexp = 8 min = -max
---------------------------------------------------------------
どれだけ精度が良いかによって異なります。 –
どのように配列を保存していますか? –