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