Python浮点复制问题

SJA*_*SJA 0 python floating-point variable-assignment

我对将浮点数组成员复制到另一个变量时看到的某些行为感到困惑 - 请帮忙!

例如

data_entry[1] = 9.6850069951

new_value = data_entry[1]


<comment> #print both

9.6850069951


9.6850663300
Run Code Online (Sandbox Code Playgroud)

我知道浮点数的二进制存储问题,但我认为使用内存的直接副本我们最终会得到相同的值。

有任何想法吗?我需要比这更好的精度!提前致谢 斯图尔特

eem*_*emz 5

在赋值之后,变量 new_value 不是浮点数的副本,它只是对完全相同对象的另一个引用。因此它不可能有不同的印刷表示。因此,原始问题中肯定省略了一些细节。

Stuart - 您能否尝试以下操作并发布结果,或者告诉我们您的实际代码有何不同。注意下面的 new_valuedata_entry[1],即它们都是同一个对象。

>> data_entry = [0,0]
>> data_entry[1] = 9.6850069951
>> new_value = data_entry[1]
>> new_value is data_entry[1]
True
>> print data_entry[1], new_value
9.6850069951 9.6850069951
Run Code Online (Sandbox Code Playgroud)