为什么当我表演的时候
g = np.float16([4.4,4.6])
我得到了一些不同的东西
g = [4.3984..., 4.6015...].
它会以某种方式影响矩阵的计算吗?我可以在不更改dtype的情况下更改此行为吗?谢谢!
ui7jx7zq1#
首先,您必须将float16转换回float才能获得结果。不过,你不会得到不同的结果,这就是实际的价值。无论精度如何,都不能用浮点数表示4.4或0.3和许多其他有理数。Python本身不存储4.4:
float16
float
4.4
0.3
>>> f"{4.4}" '4.4' >>> f"{4.4:.15f}" '4.400000000000000' >>> f"{4.4:.20f}" '4.40000000000000035527'
4.4打印为4.4的原因是,根据IEEE 754浮点数标准,15是默认的打印精度。使用较小的类型会增加误差:
>>> f"{np.float64(4.4):.20f}" '4.40000000000000035527' >>> f"{np.float32(4.4):.20f}" '4.40000009536743164062' >>> f"{np.float16(4.4):.20f}" '4.39843750000000000000'
数字支付
1条答案
按热度按时间ui7jx7zq1#
首先,您必须将
float16
转换回float
才能获得结果。不过,你不会得到不同的结果,这就是实际的价值。无论精度如何,都不能用浮点数表示
4.4
或0.3
和许多其他有理数。Python本身不存储4.4
:4.4
打印为4.4
的原因是,根据IEEE 754浮点数标准,15是默认的打印精度。使用较小的类型会增加误差:
数字支付