繁体   English   中英

将float32表示形式转换为float64 NumPy Python

[英]float32 representation to float64 NumPy Python

情况

  • 我需要使用astropy.io fits从文件中读取数据,该文件在numpy中使用。
  • 当读取时我得到的一些值是很小的负float32数,而实际上不应该在数据上存在负值(由于数据特性)。

问题

  • 难道这些数字非常小float64 ,当读取并强制转换为float32变为负数吗? 如果是,它们必须有多小?
  • 是否有一种方法可以倒退该过程,即获取原始的非常小的float64正值?
  • 难道是那些数字很小的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

从一个带符号的表示形式转换到另一个带符号的表示形式始终会保留符号位

  • 是否有一种方法可以倒退该过程,即获取原始的非常小的float64正值?

否-从64位转换为32位意味着您实际上是在丢弃原始表示形式中的一半信息,一旦消失了,就没有神奇的方法来恢复它。

对负值的更合理的解释是,它们是由于在存储数据之前对数据执行的舍入误差引起的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM