我的貪婪程序的代碼對於目前爲止所有的數字都適用,除了4.2以外。 會很感激,如果任何人都可以指出錯誤cs50 pset1貪婪異常錯誤
:) greedy.c exists
:) greedy.c compiles
:) input of 0.41 yields output of 4
:) input of 0.01 yields output of 1
:) input of 0.15 yields output of 2
:) input of 1.6 yields output of 7
:) input of 23 yields output of 92
**:(input of 4.2 yields output of 18
\ expected output, but not "22\n"**
:) rejects a negative input like -.1
:) rejects a non-numeric input of "foo"
:) rejects a non-numeric input of ""
#include <stdio.h>
#include <cs50.h>
int main(void)
{
float x;
do
{
printf("how much change is owed(in dollars)?:\n");
x = GetFloat();
}
while (x < 0);
x = x*100;
int i = 0;
while (x >= 25)
{
x = (x-25);
i++;
}
while (x >= 10)
{
x = (x-10);
i++;
}
while (x >= 5)
{
x = (x-5);
i++;
}
while (x >= 1)
{
x = (x-1);
i++;
}
printf("%d\n",i);
}
請參閱[浮點運算是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。更好的是,使用int值。 SO上有很多「變化」的問題展示了這個問題。從「不尋常」到目前爲止,這是你經歷的一個階段。 –
如果您需要精確值,請不要使用浮點數。 – Olaf