2
現在我正在使用C,並且在執行特定任務時遇到了問題。 該任務是能夠輸入一個數字和硬幣的價值將被顯示後。我的問題是,假設有0.10美分的變化,我的代碼將跳過錢圈(它檢查0.10的值是否小於變化的值,然後減去)並繼續到鎳..然後在變化值變爲0.05並且變成硬幣後跳過鎳,然後硬幣停在0.01,並且結束硬幣計數,使得計數變短並且比所需時間還長。當float值相等時,如何讓for循環繼續執行?
int main(void) {
float c;
int k = 0;
printf("How much change?: \n");
c = GetFloat();
//checks for quarters
for (float q = 0.25; q <= c; k = k + 1) {
c = c - 0.25;
printf("q \n");
}
//checks for dimes
for (float d = 0.10; d <= c; k = k + 1) {
c = c - 0.10;
printf("d \n");
}
//checks for nickels
for (float n = 0.05; n <= c; k = k + 1) {
c = c - 0.05;
printf("n \n");
}
//checks for pennies
for (float p = 0.01; p <= c; k = k + 1) {
c = c - 0.01;
printf("p \n");
}
printf("%d & %.02f \n", k, c);
}
我有一個線索,認爲該錯誤可能是在for循環的條件部分,但我不知道:/
可能重複的[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Olaf
如果人們只是在閱讀信息頁**之前* *詢問... – Olaf
在所有基於C的語言中是否都是這樣的? (C++,c#,java) – shinzou