Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C计算结果不可理解_C_Cs50 - Fatal编程技术网

C计算结果不可理解

C计算结果不可理解,c,cs50,C,Cs50,为什么我不能得到2的结果,而将2.2作为浮点输入 在我的代码中,2.2应该被转换为220,当它通过第一个for循环时,我应该得到剩余的20(这很好,因为它给了我8个硬币)。 但是当它通过第二个循环时,我不能得到20/10=2,我总是得到1 顺便说一句,如果我只是把dime放进去,那么在for循环的每次运行中,您都在从余数中减去dime,而dime在循环的每次迭代中都在增加。让我们假设在第二个for循环之前的最初更改是20。第一次循环执行将减去10,剩下的余数为10。然后,dime增加10,现在是

为什么我不能得到2的结果,而将2.2作为浮点输入

在我的代码中,2.2应该被转换为220,当它通过第一个for循环时,我应该得到剩余的20(这很好,因为它给了我8个硬币)。
但是当它通过第二个循环时,我不能得到20/10=2,我总是得到
1


顺便说一句,如果我只是把dime放进去,那么在
for
循环的每次运行中,您都在从
余数中减去
dime
,而
dime
在循环的每次迭代中都在增加。让我们假设在第二个
for
循环之前的最初更改是20。第一次循环执行将减去10,剩下的
余数
为10。然后,
dime
增加10,现在是20。循环条件失败,因为20>10,并且循环只运行一次


我的建议是给变量起更直观的名字,比如基本循环计数器的
i
x
和所需的
dimes\u
,而不是你认为变量中有2.2的
coins1

,但事实上,它可能是2.1999999999999,这比2.2稍低一点,因此导致了你看到的结果。@WernerHenze:观察得很好,尽管
2.2
通常存储为
2.2000000476837158203125
0x400CCCCD
)——多一点,而不是少一点。但问题可能与此相关:为什么所有这些整数计算都是在
float
类型上进行的?如果您将所有内容都更改为
int
,它会神奇地工作吗?(除了第一行ask/convert to int。)@RadLexus不幸的是,由于问题已迁移,用户尚未注册,因此我怀疑您是否能得到答案