我的贪婪程序的代码对于目前为止所有的数字都适用,除了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