How to format clean numbers so 1000 appear as 1.000,00
本问题已经有最佳答案,请猛点这里访问。
我目前有一些干净的数字,如:
我想要格式化这些数字,所以它们显示为:
1 2 3 4 5 | 1,00 10,00 100,00 1.000,00 10.000,00 |
我玩
有任何想法吗?
查看Intl.NumberFormat(),不需要花哨的裤子插件。 跨平台支持。
1 2 | var number = 3500; alert(new Intl.NumberFormat().format(number)); |
会弹出'3,500'
如果您想要一个简单的功能来完成这项工作,以下内容可能适合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | // Format a number n using: // p decimal places (two by default) // ts as the thousands separator (comma by default) and // dp as the decimal point (period by default). // // If p < 0 or p > 20 results are implementation dependent. function formatNumber(n, p, ts, dp) { var t = []; // Get arguments, set defaults if (typeof p == 'undefined') p = 2; if (typeof ts == 'undefined') ts = ','; if (typeof dp == 'undefined') dp = '.'; // Get number and decimal part of n n = Number(n).toFixed(p).split('.'); // Add thousands separator and decimal point (if requied): for (var iLen = n[0].length, i = iLen? iLen % 3 || 3 : 0, j = 0; i <= iLen; i+=3) { t.push(n[0].substring(j, i)); j = i; } // Insert separators and return result return t.join(ts) + (n[1]? dp + n[1] : ''); } //* console.log(formatNumber( 1234567890.567, // value to format 4, // number of decimal places '.', // thousands separator ',' // decimal separator )); // result: 1.234.567.890,5670 //*/ console.log(formatNumber( 123.567, // value to format 1 // number of decimal places )); // result: 123.6 console.log(formatNumber( '123.567', // value to format 0 // number of decimal places )); // result: 123.6 console.log(formatNumber( 123, // value to format 0 // number of decimal places )); // result: 123 console.log(formatNumber( 13, // value to format 2 // number of decimal places )); // result: 13.00 console.log(formatNumber( 0 // value to format // number of decimal places )); // result: 0.00 console.log(formatNumber( // value to format // number of decimal places )); // result: NaN |
对不起,没有花哨的正则表达式或切片/拼接数组的东西,只有POJS有效。
你可以这样做:
1 2 | var nb='1000000000'; var result = nb.replace(/(?:(^\d{1,3})(?=(?:\d{3})*$)|(\d{3}))(?!$)/mg, '$1$2.')+',00'; |
在JS中没有用于格式化数字的内置方法。 您可以使用autoNumeric。http://www.decorplanit.com/plugin/
我不知道你的情况,但我想使用angularJS。
它正是您正在寻找的,并且还有更多额外的动态格式。
更新:具体了解本地化功能。 如果你需要,它甚至可以提供多元化。