[英]How do I retrieve a missing number?Cash register- determine the appropriate change
我已经编写了该程序,但是运行该程序时,我却损失了一分钱。 (问题在最底层)
我的老师说这很好,因为我们还没有学会添加到字符串(?)上来防止这种情况的发生,但是他说我们可以尝试找出要添加的内容。
这是问题所在:
price=float(input("What is the price of the item?"))
tax=round(price*0.0725,2)
grandTotal=price+tax
tendered=float(input("How much money did customer give you?"))
print(format("The price of the item is $","26"), format(price,"6.2f"))
print(format("The tax on the item is","26"), format(tax, "6.2f"))
print(format("The total cost is","26"), format(grandTotal, "6.2f"))
print(format("You tendered","26"), format(tendered, "6.2f"))
change=tendered-grandTotal
print(format("Your change is","26"), format(change, "6.2f"))
penny=int(change*100) #transform change into pennies
dollars=penny//100 #how many dollars are there
pennyleft= penny%100 #remainder operator to find how many pennies are left
quarters= pennyleft//25 #number of quarters
pennyleft=pennyleft%25 #remainder operator to find how many pennies are left
dimes=pennyleft//10 #number of dimes
pennyleft=pennyleft%10
nickels=pennyleft//5 #number of nickels
pennyleft=pennyleft%5
pennies=pennyleft//1 #number of pennies
pennyleft=pennyleft%1
print("Your change is:")
print( format(dollars, "5"), "dollar bills,")
print( format(quarters, "5"), "quarters,")
print( format(dimes, "5"), "dimes,")
print( format(nickels, "5"), "nickels, and")
print( format(pennies, "5"), "pennies.")
这是输出; 该商品的价格是多少?5.00您欠了$ 5.36的总金额?10.00商品的价格是$ 5.00商品的税是0.36总费用是5.36您投标了10.00您的零钱是4.64您的零钱是:4美元的钞票,2个季度,1个角钱,0个镍币和3个便士。
所以我的问题是3美分实际上应该是4。关于如何解决此问题的任何建议吗?
谢谢!
您正在使用浮点数,因此结果可能会比您预期的多或少。 并非所有浮点数都可以完全存储在计算机中。 听起来令人惊讶,但实际上与通常的十进制没有什么不同。 毕竟,您也不能以小数点“存储” 1/3
! 这将是0.3333333...
(为清楚起见和缺少存储空间,将无限量省略3
s)。
如果通过打印更多的小数位数来测试所获得的值,则会发现这一行
print(format("Your change is","26"), format(change, "6.20f"))
表演
Your change is 4.63999999999999968026
并且,由于int(x)
总是四舍五入(更具体地说,它“截断为零”( 文档 )),因此下一行
penny=int(change*100)
只会截去多余的小数,因此您得到463
。 此后,该数字将转换为整数,因此不会再发生浮点错误了-但是为时已晚。
为了获得正确的计算,您所要做的就是添加另一round
:
penny=int(round(change*100)) #transform change into pennies
这将弥补损失的一分钱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.