我正在尝试用尽可能少的硬币来计算总和所需的四分之一、一角硬币和镍币的数量。这是我的代码:

x = raw_input("Please enter an amount of change")
x = float(x)
q = .25
d = .1
n = .05
numberQ = x/q
numberQ = int(numberQ)
money2 = x - (numberQ * q)
numberD = money2/d
numberD = int(numberD)
money3 = money2 - (numberD * d)
numberN = money3/n
numberN = int(numberN)
print numberQ
print numberD
print numberN

输出关闭。例如,如果我输入 1.95,它将返回 7 个季度、1 个硬币和 1 个镍,而它应该是 7 个季度 2 个硬币和 0 个镍。

最佳答案

问题出在第二步。如果从 1.95 开始,第一步返回 7 个季度,剩余 0.20 美元。所以 money2 现在是 0.20。现在我们除以一角硬币的值(value)。由于浮点误差,我们的结果可能不是偶数 2,而是更像是 1.9999999。 Python 2.7 的 int() 方法向零四舍五入,因此四舍五入为 1 角钱。剩余部分为 0.10 美元,除以镍的值(value),这会导致同样的问题,但这次它四舍五入为一个镍。

为了解决这个问题,我建议使用整数个便士而不是代表美元的浮点值。

因此,1.95 变为 195,1/4、1 角和 1 镍的值分别为 25、10 和 5。

编辑 试试这个:

x = raw_input("Please enter an amount of change (in pennies)")
x = int(x)
q = 25
d = 10
n = 5
numberQ = (x - (x % q))/q
money2 = x % q
numberD = (money2 - (money2 % d))/d
money3 = money2 % d
numberN = (money3 - (money3 % n))/n
pennies = money3 % n
print numberQ
print numberD
print numberN
print pennies
% 给出整数除法的余数。如果我们从开始的金额中减去余数并将其除以硬币值(value),我们知道结果将是一个整数。剩余部分变成新的金额。

关于Python:更改计算器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35514079/

10-12 21:20