我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。

JavaScript中有数字格式化器吗?


当前回答

我的例子是这样的

         var n =9;
         var checkval=('00'+n).slice(-2);
         console.log(checkval)

输出是09

其他回答

这是一个老问题,但我想补充一下。在现代浏览器中,你可以使用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 numToNDigitStr(num, n)
{
    if(num >=  Math.pow(10, n - 1)) { return num; }
    return "0" + numToNDigitStr(num, n-1);
}

似乎你得到的是一个字符串,而不是一个数字。用这个:

var num = document.getElementById('input').value,
    replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;

这里有一个例子:http://jsfiddle.net/xtgFp/

我的版本:

`${Math.trunc(num / 10)}${Math.trunc(num % 10)}`;

const func = (num) => '${Math.trunc(num / 10)}${Math.trunc(num % 10)}'; 常量数 = [1, 3, 5, 6, 8, 9, 10, 20, 56, 80]; nums.forEach(num => console.log(func(num)));

为ES6箭头函数更新(几乎所有现代浏览器都支持,参见CanIUse)

const formatNumber = n => ("0" + n).slice(-2);