我试图比较两个向量。 v1 = {0.520974,0.438171,0.559061} v2 = [0.520974,0.438171,0.559061}
我将v1写入文件,阅读和v2。出于某种原因,当我比较两个向量时,我变得虚假!
当我这样做:v1 [0] -v2 [0]我得到4.3123e-8
谢谢,
答案 0 :(得分:0)
与整数不同,双值对于写入和读取是脆弱的。这意味着,在字符串中表示它们的信息不一定完整。
这是导致四舍五入的主要原因:如果你有1/7而且希望用与你问题相同的格式在纸上书写它,你会得到:
0.142857
这精确到小数点后6位,但不超过这个数字,差异显示出来。计算机的唯一区别在于它以二进制计数(也是以二进制形式计算),并且由于输出(或输入)将其强制转换为十进制(或分别返回)和舍入再次每一步。所有这些都是小错误的来源。
如果您希望能够完全保存并重新加载双打(在同一台计算机上),请使用write
和read
以其原生二进制表示形式执行此操作。如果你希望它们是人类可读的,你需要牺牲精确的重建。然后,您需要将它们与稍微允许的偏差进行比较。