[英]Can I lose precision going from float32 -> float64 back to float32?
從numpy float32到python float(float64)再回到numpy float32,是否有可能失去任何保真度或精度?
我似乎找不到丟失數據的情況,但是我周圍的每個人都聲稱世界將會終結,因為丟失了數據。 在繼續之前,我只需要找到一個證明數據丟失的文檔/示例。
感謝您為我指明正確方向的任何幫助。
這是我看到的典型用例:
def serialize(val):
# val is a np.float32
return val.astype(float)
def deserialize(msg):
return np.float32(msg)
message = '1.23456789'
outgoing = serialize(message)
incoming = deserialize(message)
如果x
是float32,則float32(float64(x)) == x
。
一個例外是,如果x = nan
那么nan != nan
,雖然nan is nan
,所以如果您想捕獲所有內容,可以使用:
float32(float64(x)) == x or x is nan
。
您應該注意:
float32(1./3) # 0.33333334
float64(float32(1./3)) # 0.3333333432674408
float64(0.33333334) # 0.33333333999999998
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.