基本上,除了 0.93 之外,它几乎适用于我尝试过的所有情况。然后我在 while 循环中添加了“打印钱”以查看它在每个循环之后都在做什么,这就是发生的事情:
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
谁能解释一下这到底是怎么回事?
money = input("Enter an amount less than a dollar: ")
quarter = 0
dime = 0
nickel = 0
penny = 0
while money > 0.00:
if money >= 0.25:
quarter = quarter + 1
money = money - 0.25
elif money >= 0.10:
dime = dime+1
money = money - 0.10
elif money >= 0.05:
nickel = nickel + 1
money = money - 0.05
else:
penny = penny + 1
money = money - 0.01
print "Your change is %d quarters %d dimes %d nickels %d pennies" % (quarter, dime, nickel, penny)
请您参考如下方法:
float can't represent most decimal fractions exactly ,就像你不能用十进制 float 写出 1/3 的结果一样。
使用整数来计算美分,或者使用 decimal module .
顺便说一句,这与 Python 无关,而是与计算机通常进行 float 学运算的方式有关。
