擅长:python、mysql、java
<p>正如Sıddık Açıl所指出的,这是由于浮点运算的准确性。介于0.1和0.2之间的浮点数的数量是无限的。你的电脑必须在某处划清界限。你知道吗</p>
<p>这个修正解决了你的问题,只记得最后再把账单除以100。你知道吗</p>
<pre><code>nmoney = 1.2
nmoney = nmoney * 100
print('original: ' + str(1.2))
bills = []
denominations = [10000, 2000, 1000, 500, 100, 25, 10, 5, 1]
n = 0
while 0 < nmoney <= 1000:
hbill = denominations[n] # error
while nmoney >= hbill: # possible stem of error?
bills.append(hbill)
nmoney -= hbill
print('+' + str(hbill) + ' ' + str(bills) + ' ' + str(nmoney))
n += 1
print('SWITCH from ' + str(hbill))
print('DONE')
</code></pre>