javascript 将数字变为可读取型式
2015-11-12 12:56
591 查看
/** * 反转字符串 * @param {type} str * @returns {strrev.str|String} */ function strrev(str) { var s = ''; for (var i = 0; i < str.length; i++) { s = str[i] + s; } return s; } /** * 重复一个字符串 * @param {type} str 要重复的字符串 * @param {type} n 重复次数 * @returns {String} */ function str_repeat(str, n) { var ren = ''; for (var i = 0; i < n; i++) { ren += str; } return ren; } /** * 将数字变为可读 *最大支持数字 * 9999 9999 9999 9999 * 9999 9999 9999 9999 * 9999 9999 9999 9999 * 9999 9999 9999 9999 * *--------------------- * 1234 4567 9012 3456 * 7890 1234 5678 9012 * * 一千二百三十四万 * 四千五百六十七亿 * 九千零一十二万 * 三千四百五十六兆 * * 七千八百九十万 * 一千二百三十四亿 * 五千六百七十八万 * 九千零一十二 * * ----------------- * 1234 4567 9012 3456 * 7890 1234 5678 9012 * 1234 4567 9012 3456 * 7890 1234 5678 9012 * * 一千二百三十四万 * 四千五百六十七亿 * 九千零一十二万 * 三千四百五十六兆 * * 七千八百九十万 * 一千二百三十四亿 * 五千六百七十八万 * 九千零一十二京 * * 一千二百三十四万 * 四千五百六十七亿 * 九千零一十二万 * 三千四百五十六兆 * * 七千八百九十万 * 一千二百三十四亿 * 五千六百七十八万 * 九千零一十二 * *万 2 4 6 8 *亿 3 7 11 15 *兆 5 13 *京 9 * * 万亿兆京 * 个十百千 */ function number_read(n) { var an = String(n).split('.'); var before_n = an[0];//前面 整数部分 var after_n = an[1];//后面 小数部分 var before_l_mod_4 = Math.ceil(before_n.length / 4); var re_before_n = strrev(before_n);//倒序字符串 var arr_before_n = []; //将字符串变数组从左到右4位一组 for (var i = 0; i < before_l_mod_4; i++) { arr_before_n[i] = strrev(re_before_n.substr(i * 4, 4)); } var rzt = []; for (var k in arr_before_n) { var rzt2 = []; var j = arr_before_n[k]; if (parseInt(j) == 0) { //如果4个数字全为0时 rzt.push([]); continue; } for (var i = 0; i < j.length; i++) { if (i < 2 && j[i + 1] == 0 && j[i] == 0) {//下一位是0并且当前位也是0 //连续多个0只显示一个0 continue; } else if (i + 1 == j.length && j[i] == 0) { //最后一个数字为0 continue; } var n2 = j.length - i - 1;//重复次数 rzt2.push(j[i]); if (n2 > 0 && j[i] != 0) { rzt2.push('1' + str_repeat('0', n2)); } } rzt.push(rzt2); } for (var k in rzt) { var k1 = parseInt(k) + 1; if (k1 == 9) { rzt[k].push('100000000000000000000000000000000');//京 } else if (k1 == 5 || k1 == 13) { rzt[k].push('10000000000000000');//兆 } else if (k1 == 3 || (k1 - 3) % 4 == 0) { rzt[k].push('100000000');//亿 } else if (k1 % 2 == 0) { rzt[k].push('10000');//万 } } rzt = rzt.reverse();//颠倒数组中元素的顺序 //二维数组变一维 var return_rzt = []; for (var k in rzt) { var v1 = rzt[k]; for (var k1 in v1) { return_rzt.push(v1[k1]); } } //判断是否存在小数 if (!after_n) { return return_rzt; } //将小数部分加个数组 return_rzt.push('.'); for (var i = 0; i < after_n.length; i++) { return_rzt.push(after_n[i]); } return return_rzt; } console.log(number_read('1004000090123450.345677'));
相关文章推荐
- javascript【字符串】相关函数
- js 事件绑定的方法
- js 事件绑定的方法
- 3. javascript 引擎Rhino源代码分析 浅析 实例函数对象及this
- json的发送和接收
- js 函数参数
- jstack使用-倒出线程堆栈
- 我们来谈谈promise,讨论一下如何优雅的避免多层回调嵌套的问题
- Json数据在线格式化
- CreateJs系列教程之 EaselJs_3_绘制移动矩形(Shape)
- Extjs 动态Gird【列名动态创建】
- javaScript细节之生成不重复的随机数
- C# WebService的简单和复杂参数类型和结果的JSON格式
- js检测浏览器中是否安装了flash播放插件
- js判断是否位数字
- MSCRM4.0如何使js事件在批量编辑表单中触发
- JS 弹出遮罩层,内部为DIV
- js获取网页高度
- C#开发的WebService使用JSON格式传递数据+Ajax测试
- js读取图片分辨率