- A+
所属分类:Web前端
人民币组合问题
题目:人民币由100元,50元,20元10元,5元1元,5毛,1毛面额组合。写一个方法随便传入一个数字参数,就输出人民币组合。
比如传入1526.5就显示1526.5元由人民币100元15张,20元1张,5元一张1元一张5毛一张构成。无需考虑多种组合方式,只需考虑最简单的组合方式。
思考
-
我们首先封装一个函数,用一个形参来接收输入的值
-
分析这个值,可能有小数
- 计算整数位:用/来取模,用%来取余。从大到小依次计算
- 计算小数位:
n*10%10
,就可以转成整数了,然后就和整数位计算一样了
-
运行结果
以下就是我用js代码,写的人民币组合算法。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> var n = 1526.5; //调用 var obj = rmb(n); console.log(obj) function rmb( n ){ console.log( n ); var a100 = parseInt( n / 100 ); var value = n % 100; var a50 = parseInt( value / 50 ); value = value % 50; var a20 = parseInt( value / 20 ); value = value % 20; var a10 = parseInt( value / 10 ); value = value % 10; var a5 = parseInt( value / 5 ); value = value % 5; var a1 = parseInt( value ); //把小数 转成 整数 value = n * 10 % 10; a05 = parseInt(value / 5); var a01 = parseInt( value % 5 ) return {a100,a50,a20,a10,a5,a1,a05,a01}; } </script> </body> </html>
ps:我们只要理解怎么取模和取余数,这样问题就很简单了。
类似的问题还有很多,比如:
- 给一个时间戳,计算年月日或者时分秒
- 给一个整数,计算个位、十位、百位、千位...