2016-11-25 164 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

不客氣,謝謝! –