场合
astropy.io
中的fits
来读取文件中的数据,numpy
使用float32
。 问题
float64
,读取并投放到float32
时会变为负数吗?如果是的话,他们有多小? float64
值?答案 0 :(得分:1)
- 这些数字是非常小的float64,当读取并转换为float32变为负数时?如果是的话,他们必须有多小?
否 - 如果原始的float64值小于最小的可表示的float32数,则在转换后它将简单地等于零:
tiny = np.finfo(np.float64).tiny # smallest representable float64 value
print(tiny)
# 2.22507385851e-308
print(tiny == 0)
# False
print(np.float32(tiny))
# 0.0
print(np.float32(tiny) == 0)
# True
从一个签名的表示法转换为另一个表示法始终保留sign bit。
- 有没有办法倒回过程,即获得原始的非常小的float64值?
不 - 从64位转换为32位意味着您实际上丢弃了原始表示中的一半信息,一旦它消失,就没有神奇的方法来恢复它。
对负值的一个更合理的解释是,它们是在数据存储之前对数据进行计算的舍入误差造成的。