爲什麼在下面的代碼中打印這個文件從不打印?我已經認識到shiftx和shifty以確保在某些時候它們都是0.3。C++循環打印
for(double shifty=0; shifty < 2; shifty+=.1) {
for(double shiftx=0; shiftx < 2; shiftx +=.1) {
if((shiftx == 0.3) && (shifty == 0.3)) {
cout << "PRINT THIS" << endl;
}
}
}
我明白爲什麼這個工程,但如果0.3不能正確代表,你嘗試用.3比3,不會他們都不能正確代表,因此比較等於?還是說它們可以以幾乎不同的方式「幾乎」表現出來,而這只是讓它們平等或不平等的機會? –
@Seth或多或少總結它。它們可以以幾乎不同的方式「表示」,文字值.1和.3將轉換爲編譯器選擇的近似浮點形式,無論.1的浮點形式如何,如果它並不是0.3近似值的1/3,那麼內部循環中的相等性測試將失敗。 – csj