【Python坑系列】
为了节约空间,使用numpy数组时候采用了float16,结果发现精度远远不达标
默认的floar64是最接近原本浮点数的
a = 0.0001 * np.ones(10,np.float16)
a
Out[206]:
array([ 0.00010002, 0.00010002, 0.00010002, 0.00010002, 0.00010002,
0.00010002, 0.00010002, 0.00010002, 0.00010002, 0.00010002], dtype=float16)
a = 0.0001 * np.ones(10,np.float32)
a
Out[208]:
array([ 9.99999975e-05, 9.99999975e-05, 9.99999975e-05,
9.99999975e-05, 9.99999975e-05, 9.99999975e-05,
9.99999975e-05, 9.99999975e-05, 9.99999975e-05,
9.99999975e-05], dtype=float32)
a = 0.0001 * np.ones(10,np.float64)
a
Out[210]:
array([ 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001,
0.0001, 0.0001, 0.0001])
a = 0.9999 * np.ones(10,np.float64)
a
Out[212]:
array([ 0.9999, 0.9999, 0.9999, 0.9999, 0.9999, 0.9999, 0.9999,
0.9999, 0.9999, 0.9999])
本文通过对比不同精度浮点数在numpy数组中的表现,揭示了float16、float32及float64之间的精度差异。实验结果显示,对于小数值0.0001,float16的精度损失较大,而float64能保持最佳准确性。
1万+

被折叠的 条评论
为什么被折叠?



