1

从 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)
4

1 回答 1

5

如果x是 float32 那么float32(float64(x)) == x.

一个例外是 if x = nanthen nan != nan,though 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
于 2012-09-20T17:06:33.163 回答