84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
在做一个和金融有关的系统,里面牵涉到金额数字这些东西,希望能在格式化后更适合阅读。
javascript数字格式化通用类——accounting.js使用:http://www.ithr.org.cn/blogs/blog1.ph...
分享5个javascript的数字格式化函数:http://www.ithr.org.cn/blogs/blog1.ph...
答案更新:今天看到有人赞了这个答案,老问题还有人在看也是受宠若惊,就更新下答案吧。 最近这些日子我也碰到了相关的问题,发现其实自带的 Number 就能帮助我们解决这个问题。使用
(10000).toLocaleString('en-US');
就可以帮我们按照三位数加上逗号,如果使用
(10000).toLocaleString('en-US', {style: 'currency', currency: 'USD'});
还可以帮我们加上 $ 前缀,简单方便。 更多使用方法可以参考 https://developer.mozilla.org... ,另外这个 IE11 才支持哦~
$
我是老答案
PHP里头有number_format函数可以对数字进行格式化,然后我找了一个JS版的number_format函数,感觉还不错。 但是我觉得这个太强大了,只是要加个逗号什么的没必要,就自己写了一个。JS新手,用PHP的思路写的JS,可能不是最好的,不过确定是可以用的,希望能帮到你。
function number_format(num, format) { if(num.length <= 3) return num; if (num.length % 3 == 0) { count = num.length/3; }else{ count = (num.length-num.length%3)/3; } var text = ''; for(i=0;i<count;i++) { if((count-i-1)*3+num.length%3!=0) { text=format+num.slice((count-i-1)*3+num.length%3,(count-i-1)*3+num.length%3+3)+text; }else { text=num.slice((count-i-1)*3+num.length%3,(count-i-1)*3+num.length%3+3)+text; } } return num.slice(0,num.length % 3)+text; }
在不少地方看过这个问题,没有看到特别满意的答案。 主要原因:
在此分享一下我的答案,全当抛砖引玉,不足的地方欢迎指正。
function formatNumber(num, precision, separator) { var parts; // 判断是否为数字 if (!isNaN(parseFloat(num)) && isFinite(num)) { // 把类似 .5, 5. 之类的数据转化成0.5, 5, 为数据精度处理做准, 至于为什么 // 不在判断中直接写 if (!isNaN(num = parseFloat(num)) && isFinite(num)) // 是因为parseFloat有一个奇怪的精度问题, 比如 parseFloat(12312312.1234567119) // 的值变成了 12312312.123456713 num = Number(num); // 处理小数点位数 num = (typeof precision !== 'undefined' ? num.toFixed(precision) : num).toString(); // 分离数字的小数部分和整数部分 parts = num.split('.'); // 整数部分加[separator]分隔, 借用一个著名的正则表达式 parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (separator || ',')); return parts.join('.'); } return NaN; }
测试:
formatNumber(10000) "10,000" formatNumber(10000, 2) "10,000.00" formatNumber(10000.123456, 2) "10,000.12" formatNumber(10000.123456, 2, ' ') "10 000.12" formatNumber(.123456, 2, ' ') "0.12" formatNumber(56., 2, ' ') "56.00" formatNumber(56., 0, ' ') "56" formatNumber('56.') "56" formatNumber('56.a') NaN
http://ntt.cc/2008/04/25/6-very-basic...
用正则表达式匹配
比如:
result = "1234567890".replace(/\d+?(?=(?:\d{3})+$)/img, "$& ");
javascript数字格式化通用类——accounting.js使用:http://www.ithr.org.cn/blogs/blog1.ph...
分享5个javascript的数字格式化函数:http://www.ithr.org.cn/blogs/blog1.ph...
答案更新:
今天看到有人赞了这个答案,老问题还有人在看也是受宠若惊,就更新下答案吧。
最近这些日子我也碰到了相关的问题,发现其实自带的 Number 就能帮助我们解决这个问题。使用
就可以帮我们按照三位数加上逗号,如果使用
还可以帮我们加上
$
前缀,简单方便。更多使用方法可以参考 https://developer.mozilla.org... ,另外这个 IE11 才支持哦~
我是老答案
PHP里头有number_format函数可以对数字进行格式化,然后我找了一个JS版的number_format函数,感觉还不错。
但是我觉得这个太强大了,只是要加个逗号什么的没必要,就自己写了一个。JS新手,用PHP的思路写的JS,可能不是最好的,不过确定是可以用的,希望能帮到你。
在不少地方看过这个问题,没有看到特别满意的答案。
主要原因:
在此分享一下我的答案,全当抛砖引玉,不足的地方欢迎指正。
测试:
http://ntt.cc/2008/04/25/6-very-basic...
用正则表达式匹配
比如: