运行这个程序时,
cost = 12
money = 12.51
change = money - cost
dollars = int(change)
change -= dollars
quarters = int(change / 0.25)
change -= quarters * 0.25
dimes = int(change / 0.1)
change -= dimes * 0.1
nickels = int(change / 0.05)
change -= nickels * 0.05
pennies = int(change / 0.01)
print("""Your change is:
%i dollars
%i quarters
%i dimes
%i nickels
%i pennies
""" % (dollars, quarters, dimes, nickels, pennies))
输出是
Your change is:
0 dollars
2 quarters
0 dimes
0 nickels
0 pennies
为什么硬币是0?我试过单独打印便士,同样的事情发生了。我也确定这change / 0.01
等于1.0
。出于某种原因,它似乎int(1.0)
等于0
。显然,事实并非如此。也许1.0
是一个浮点数,实际上不是 1 并被限制为0
?
旁注:删除便士上的 int 函数并替换为%.0f pennies
作品。
我想这正是人们说在处理金钱时不要使用浮点数时所说的。:)