将数字转换为金额

时间:2016-05-18 01:23:42

标签: javascript

我正在创建一个程序,其中我有3种可用货币,每种货币需要100种以前的货币。以硬币为例,我有145便士。如何将其转换为1美元,45美分或10美元钞票,1美元和45美分? 我试图将数字转换为字符串并使用由数字长度确定的substr()函数。因此,如果一个数字大于3位数,我无法弄清楚如何取第1位的子位数和最后2位,同时保持与所有长度一致。

1 个答案:

答案 0 :(得分:2)

您可以使用modulo,基本上找到除以100和10,000(100 * 100)的余数。

function returnCurrencies(baseCoins)
{
  //Number of bigCoins can be found by subtracting the remainder of % 10000 then dividing by 10000
  var bigCoins = (baseCoins - (baseCoins % 10000))/10000;
  //Now take off the bigCoins from the input
  baseCoins %= 10000;
  //Same for medCoins, but with 100
  var medCoins = (baseCoins - (baseCoins % 100))/100;
  //Now take off the medCoins from the input
  baseCoins %= 100;
  //Whatever is left is the small coins
  return [bigCoins, medCoins, baseCoins];
}

returnCurrencies(145); //[0, 1, 45]

修改

如果模数不清楚,我会尝试更详细地解释:

var bigCoins = (baseCoins - (baseCoins % 10000))/10000;

通过几个步骤计算大硬币的数量:

  1. 找出不会制作大币的硬币数量:
  2. (baseCoins % 10000)

    这会返回除法的余数,例如15 % 4 == 3,这是不会制作大币的硬币数量,但是我们不会有多少钱,所以...

    1. 从总数中减去它们:
    2. baseCoins - (baseCoins % 10000)

      当然,这里的任何东西都可以被10,000或大量硬币整除,从而导致最后一步:

      1. 将这些基础硬币转换为大硬币:
      2. (baseCoins - (baseCoins % 10000))/10000

        因为bigCoin中有10,000个baseCoins。

        1. 然后将所有大币从基地币中拿走:
        2. baseCoins %= 10000

          (这只是余下部分,你也可以从bigCoins*10000中减去baseCoins

          当然,同样适用于medCoins。