2016-11-25 112 views
-1

我想比较两个向量。 V1 = {0.520974,0.438171,0.559061} V2 = 0.520974,0.438171,0.559061}比较向量的双重

我写V1到一个文件,阅读,这就是V2。出于某种原因,当我比较这两个向量时,我变得错误了!

当我这样做:V1 [0] -V2 [0]我得到4.3123e-8

感谢,

+0

它们在文件中如何?作为文本,您必须非常小心地使用往返安全转换。 – harold

回答

0

Double值,不像整数,反对写脆弱和阅读。这意味着,用字符串表示它们的信息不一定是完整的。

的是,领先的原因是四舍五入:这就像如果你有1/7,想要把它写在纸上相同的格式,在你的问题,你会得到:

0.142857 

这精确到小数点后6位,但不超过6位,差异显示出来。计算机中唯一的区别在于它以二进制计数(也以二进制计数),并且由于在输出(或输入)处将它强制转换为十进制(或分别返回)以及再次围绕这一事实而变得更复杂每个步骤都有。所有这些都是小错误的来源。

如果您希望能够完全保存并重新加载双精度(在同一台机器上),请使用writeread以原生二进制表示形式进行。如果你想让它们成为人类可读的,你需要牺牲精确的重建。然后你需要将它们进行比较,直到有一点允许的偏差。

+0

有道理,我现在将差异与小幅度进行比较,它的工作原理!谢谢! – Steve

+0

不客气,谢谢! –