我在這裏有奇怪的問題比較,請參閱:雙重價值的變化,當我需要與其他價值
我有一個程序,在那裏我閱讀* .txt文件和存儲到矩陣double matrix[][]
的一些價值,至今太好了。
看值:
-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5
-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5
-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5
-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5
-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.496094 -0.5 -0.5 -0.5 -0.5
我已經打印此文件和所有都OK,
for (int i = 0; i < 64; ++i) {
std::cout << matrix[0][i] << " ";
}
,但在我的程序的其他時刻,我需要與其他的價值觀和我比較這值有驚喜所有值-0.5都可以,但值-0.496094不是,該值更改爲-0,49609399999999998
所以當我做這個
double data[];
if (data[0] == matrix[0][59]) {
}
//the result always is false :/
有某種原因發生的呢?
歡迎使用浮點/雙精度值。你應該投入一些時間來研究浮點數的實際表示方式,二進制和侷限性。 「.496094」必須是一個非理性數字,以基數2浮點數表示時,並且如果由於不同的數學運算而得出不同的結果,則不會與所謂的相同數字進行比較。 –
Sam Varshavchik你的建議是什麼? –