-1
printf("Insert money for payment: ");
while(!(scanf("%g\n", &insertMoney) == EOF || !insertMoney)){
if(insertMoney == 0.05f ||insertMoney == 100 || insertMoney == 50 || insertMoney == 20 || insertMoney == 10 || insertMoney == 5 || insertMoney == 2 || insertMoney == 1 || insertMoney == 0.50 || insertMoney == 0.2 || insertMoney == 0.20 || insertMoney == 0.1 || insertMoney == 0.02 || insertMoney == 0.01 || insertMoney == 0)
totalSum += insertMoney;
else{
fake = insertMoney;
printf("%g is invalid!\n", fake);
return 1;
}
}
如果我插入100,50或任何數字if,正常工作。 如果我插入0.20或0.05(任何數字與0.xx)說我是無效的。比較C中的數字
PS:insertMoney是float。
這個問題[爲什麼不使用雙人或浮動代表貨幣?](http://stackoverflow.com/questions/3730019/why-not-use-double浮動到代表貨幣)可能是你感興趣的。 –
閱讀[scanf](http://en.cppreference.com/w/c/io/fscanf)的文檔以及您正在使用的每個功能。另請閱讀http://floating-point-gui.de/ –
嗯,'scanf(「%g \ n」,&insertMoney)== EOF' ???這裏scanf的返回值只能是0或1.你想在這裏做什麼? –