为什么在下面的代码中打印这个文件从不打印?我已经认识到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