是否有可能失去从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)
答案 0 :(得分:5)
如果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