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

JavaScript中有数字格式化器吗?


当前回答

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $('#test').keypress(allowOnlyTwoPositiveDigts);
            });

            function allowOnlyTwoPositiveDigts(e){

                var test = /^[\-]?[0-9]{1,2}?$/
                return test.test(this.value+String.fromCharCode(e.which))
            }

        </script>
    </head>
    <body>
        <input id="test" type="text" />
    </body>
</html>

其他回答

我建立了一个非常简单的格式函数,每当我需要一个简单的日期格式化时,我就调用它。当数字小于10时,它处理将个位数格式化为两位数。它踢出的日期格式为2018年9月29日星期六- 00:05:44

这个函数被用作utils变量的一部分,所以它被称为:

let timestamp = utils._dateFormatter('your date string');

var utils = {
  _dateFormatter: function(dateString) {
    let d = new Date(dateString);
    let hours = d.getHours();
    let minutes = d.getMinutes();
    let seconds = d.getSeconds();
    d = d.toDateString();
    if (hours < 10) {
      hours = '0' + hours;
    }
    if (minutes < 10) {
      minutes = '0' + minutes;
    }
    if (seconds < 10) {
      seconds = '0' + seconds;
    }
    let formattedDate = d + ' - ' + hours + ':' + minutes + ':' + seconds;
    return formattedDate;
  }
}

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

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)));

使用这个函数,你可以打印任意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;
};

编辑(2021):

不再需要像这样手工格式化数字了。这个答案写在很久以前——在遥远的2011年,那时IE很重要,巴别塔和捆绑器只是一个美好的、充满希望的梦想。

我认为删除这个答案是错误的;然而,如果你发现自己在这里,我想把你的注意力转移到这个问题的投票第二高的答案。

它将向您介绍使用. tolocalestring()与选项参数{minimumIntegerDigits: 2}。令人兴奋的东西。下面我用这个方法从我最初的答案中重新创建了所有三个例子,以方便你。

[7, 7.5, -7.2345].forEach(myNumber => { let formattedNumber = myNumber.toLocaleString('en-US', { 最小整数位数:2, 使用分组:假 }) console.log( '输入: ' + 我的号码 + '\n' + '输出: ' + 格式化数字 ) })


最初的回答:

我发现的最好的方法是这样的:

(注意,这个简单版本只适用于正整数)

var myNumber = 7; var formattedNumber = (“0” + myNumber).slice(-2); 控制台.log(格式化编号);

对于小数,您可以使用这个代码(尽管它有点草率)。

var myNumber = 7.5; var dec = myNumber - Math.floor(myNumber); 我的号码 = 我的号码 - 十进制; var formattedNumber = (“0” + myNumber).slice(-2) + dec.toString().substr(1); 控制台.log(格式化编号);

最后,如果必须处理负数的可能性,最好存储符号,将格式应用于数字的绝对值,并在事后重新应用符号。注意,此方法没有将数字限制为2位。相反,它只限制小数左边的数字(整数部分)。(决定符号的线在这里找到)。

var myNumber = -7.2345; var 符号 = myNumber?myNumber<0?-1:1:0; 我的号码 = 我的号码 * 符号 + '';穷人的绝对价值 var dec = myNumber.match(/\.\d+$/); var int = myNumber.match(/^[^\.]+/); var 格式化数字 = (符号 < 0 ?'-' : '') + (“0” + int).slice(-2) + (dec !== null ? dec : ''); 控制台.log(格式化编号);