比较双重向量

时间:2016-11-25 16:29:25

标签: c++11 vector

我试图比较两个向量。 v1 = {0.520974,0.438171,0.559061} v2 = [0.520974,0.438171,0.559061}

我将v1写入文件,阅读和v2。出于某种原因,当我比较两个向量时,我变得虚假!

当我这样做:v1 [0] -v2 [0]我得到4.3123e-8

谢谢,

1 个答案:

答案 0 :(得分:0)

与整数不同,双值对于写入和读取是脆弱的。这意味着,在字符串中表示它们的信息不一定完整。

这是导致四舍五入的主要原因:如果你有1/7而且希望用与你问题相同的格式在纸上书写它,你会得到:

0.142857

这精确到小数点后6位,但不超过这个数字,差异显示出来。计算机的唯一区别在于它以二进制计数(也是以二进制形式计算),并且由于输出(或输入)将其强制转换为十进制(或分别返回)和舍入再次每一步。所有这些都是小错误的来源。

如果您希望能够完全保存并重新加载双打(在同一台计算机上),请使用writeread以其原生二进制表示形式执行此操作。如果你希望它们是人类可读的,你需要牺牲精确的重建。然后,您需要将它们与稍微允许的偏差进行比较。