0

所以我需要知道如何将一定数量的钱分成各种钞票和铸币的实际数量。我知道这很令人困惑,所以让我举个例子:

$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语句都会确定您的总金额是否需要该类型的额外计费金额,然后要么添加到已经创建的钞票/硬币金额,要么继续下一个金额。

这是一种有效的做事方式,还是我错过了一种更简单/更快的算法/模式,这将使我的生活变得更轻松,谁正在阅读我的代码?如果您需要更多详细信息,我很乐意根据需要编辑问题。

4

1 回答 1

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) 一旦你有 > 10,你就达到了便士;保存它们,将 Value 减少该数量,并且 Value 为零,所以你完成了。

于 2013-09-12T02:25:50.607 回答