지금은 C를 사용하고 있는데 특정 작업을 수행하는 동안 문제가 발생했습니다. 작업은 숫자를 입력 할 수 있고 사용 된 동전의 값이 표시됩니다. 내 문제는 0.10 센트의 가치가 있다고 말하면서, 제 코드는 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
사람들이 정보 페이지를 단지 읽을 수만 있다면 ** 전에 * * asking ... – Olaf
모든 C 기반 언어에서 이와 비슷한가요? (C++, C#, java) – shinzou