可以从float32 - >中失去精度吗? float64回到float32?

时间:2012-09-20 16:54:28

标签: python numpy floating-point

是否有可能失去从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)

1 个答案:

答案 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
相关问题