所以我需要知道如何将一定数量的钱分成各种账单和硬币的实际数量。我知道这很令人困惑,所以让我举一个例子:
$16.32 - Sixteen dollars and thirty-two cents
One $10 bill
One $5 bill
One $1 bill
One Quarter ($0.25)
One Nickel ($0.05)
Two Pennies ($0.01)
正如你所看到的,我们只是得到一个价值的账单和硬币的数量,这将根据用户输入而改变。
这是我当前的设置(Visual Basic):
If 100 Mod amount < 0 Then
If 50 Mod amount < 0 Then
' Continue this pattern until you get all the way down to the end ($0.01)
Else
While amount > 50
fiftiesAmount += 1
amount -= 50
End If
Else
While amount > 100
hundredsAmount += 1
amount -= 100
End If
基本上,每个If
语句都会确定您的总金额是否需要该类型的额外结算金额,然后再添加已创建的帐单/硬币金额或转移到下一金额。
这是一种有效的做事方式,还是我错过了一个更容易/更快的算法/模式,这将使我的生活,以及谁在阅读我的代码的生活更轻松? 如果您需要额外的详细信息,我将很乐意根据需要编辑问题。
答案 0 :(得分:2)
将您的金额转换为美分(这更容易)。除以正在测试的货币值,然后从余额中扣除该金额(伪代码)
Value = 16.32 * 100 ' Convert to cents
If Value > 10000 ' Hundreds
Hundreds = Value / 10000 ' How many?
Value = Value - (Hundreds * 10000) ' Reduce amount accordingly
End If
If Value > 5000 ' Fifties
Fifties = Value / 5000
Value = Value - (Fifties * 5000)
End If
If Value > 2000 ' Twenties
Twenties = Value / 2000
Value = Value - (Twenties * 2000)
End If
重复直到你的数量少于100,此时你开始使用硬币(50,25,10,5) 一旦你得到&gt; 10,你达到了便士;保存它们,减少该数量的价值,以及 值为零,所以你已经完成了。