将数字转换为一定数量的硬币
Converting a number to an amount of coins
我正在创建一个程序,其中我有3种可用的货币,每种货币都需要前一种货币的100才能获得。以硬币为例,我有145便士。我如何将其转换为1美元、45便士,或者不转换为10美元、1美元和45便士?我尝试将数字转换为字符串,并使用由数字长度决定的substr()函数。因此,如果一个数字大于3位,我不知道如何在保持所有长度一致的情况下取第一位和最后2位的子串。
您可以使用modulo
,基本上可以找到除以100和10000(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;
这通过几个步骤来计算大硬币的数量:
- 查找不会成为大硬币的硬币数量:
(baseCoins % 10000)
这返回除法的剩余部分,例如15 % 4 == 3
,即有多少硬币不会制造大硬币,但我们不希望有多少会,所以…
- 从总数中减去:
baseCoins - (baseCoins % 10000)
当然,这里的任何东西都可以被10000整除,或者被大量的大硬币整除,这就是最后一步:
- 将这些基本硬币转换为大硬币:
(baseCoins - (baseCoins % 10000))/10000
因为一个bigCoin中有10000个baseCoin。
- 然后从baseCoins中拿走所有bigCoins:
baseCoins %= 10000
(这只是余数,你也可以从baseCoins
中减去bigCoins*10000
)
当然,这同样适用于medCoins。
相关文章:
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Javascript排序字符串或数字
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 将数字四舍五入到小数点后两位
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 正则表达式与数字中的第二个点匹配
- 制作一个regex来验证只有一个数字的字符串
- 分开的数字和字母