【发布时间】:2019-07-30 22:40:06
【问题描述】:
我和一个朋友编写了这两个函数来回答一个问题,即如果给定零钱的总价值,你需要返还多少硬币来换取零钱。 25美分硬币、5美分硬币和硬币:
我们变化值的幅度给了我们不同的答案,但是我不确定如何解释这种差异
def num_coins(cents):
coins = [25, 10, 5, 1]
count = 0
for coin in coins:
while cents >= coin:
cents = cents - coin
count += 1
return count
#########
def coin_return(change):
coin_options = [.25,.10,.05,.01]
number_of_coins = 0
for coin in coin_options:
while change >= coin:
number_of_coins += 1
change = change - coin
return number_of_coins
print(coin_return(.24))
print(num_coins(24))
正确的输出是六,两角钱和四便士。 num_coins 函数返回这个,但是 coin_return 函数返回 5。这里发生了什么事?我错过了什么明显的东西吗?
【问题讨论】:
-
无法测试以浮点数进行的计算是否相等。例如,当您期望
.01时,计算机可能具有值.0099999。 -
在需要精确(到最后一位小数)值时,切勿使用
floats。由于他们的计算机表示,他们不会是准确的。
标签: python python-3.x