簡體   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