簡體   English   中英

從float32-> float64返回float32會失去精度嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM