【发布时间】:2013-08-10 03:52:44
【问题描述】:
运行此程序时,
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 有效。
我想这正是人们说在处理金钱时不要使用浮点数时所谈论的。 :)
【问题讨论】:
标签: python floating-point int