我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
当前回答
这是一个老问题,但我想补充一下。在现代浏览器中,你可以使用repeat来简化正数格式:
('0'.repeat(digits - 1) + num).substr(-digits)
如果你想要支持IE并且知道最大数字数(例如,10位):
('000000000' + num).substr(-digits)
对于负整数:
(num < 0 ? '-' : '') + ('000000000' + Math.abs(num)).substr(-digits)
对于正数显式使用+:
['-', '', '+'][Math.sign(num) + 1] + ('000000000' + Math.abs(num)).substr(-digits)
其他回答
这很简单,而且效果很好:
function twoDigit(number) {
var twodigit = number >= 10 ? number : "0"+number.toString();
return twodigit;
}
似乎你得到的是一个字符串,而不是一个数字。用这个:
var num = document.getElementById('input').value,
replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
这里有一个例子:http://jsfiddle.net/xtgFp/
使用这个函数,你可以打印任意n个数字
function frmtDigit(num, n) {
isMinus = num < 0;
if (isMinus)
num *= -1;
digit = '';
if (typeof n == 'undefined')
n = 2;//two digits
for (i = 1; i < n; i++) {
if (num < (1 + Array(i + 1).join("0")))
digit += '0';
}
digit = (isMinus ? '-' : '') + digit + num;
return digit;
};
你可以使用padStart方法:
更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
check this example:函数n(num, len = 2) { 返回“$ {num}”。padStart (len, ' 0 '); } console.log (n (9));/ /打印“09” console.log (n (10));/ /打印“10” console.log (n (999));/ /打印“999” console.log (n(999 6)); / /打印“000999”
如果数字大于9,则将数字转换为字符串(一致性)。否则,加一个零。
function n(n){
return n > 9 ? "" + n: "0" + n;
}
n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"