基本上,除了0.93以外,它几乎适用于我试过的所有案例。然后,我在while循环中添加了“print money”来查看它在每个循环之后都在做什么,结果如下:
Enter an amount less than a dollar: 0.93
0.68
0.43
0.18
0.08
0.03
0.02
0.01
3.81639164715e-17
-0.01
Your change is 3 quarters 1 dimes 1 nickels 4 pennies
有人能解释一下到底是怎么回事吗?在
^{pr2}$
Tags:
浮点数can't represent most decimal fractions exactly,就像你不能用十进制浮点表示法写出1/3的结果一样。在
使用整数改为用分计算,或使用^{} module 。在
顺便说一句,这与Python无关,但与计算机通常处理浮点运算的方式有关。在
//
是整数除法。%
是模运算符(整数除法的余数)考虑一下,你可以传入一个列表[25,10,5,1],然后循环执行
你不能用浮点精确地表示大多数分数。我认为在你的情况下,整数是解决问题的最好办法。我重写了您的代码,使用了美分和python3。在
相关问题 更多 >
编程相关推荐