我想把一个数格式化为两位数。这个问题是在传递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)
其他回答
JavaScript没有内置的数字格式化器,但是有一些库可以实现这个功能:
下划线。String提供了sprintf函数(以及许多其他有用的格式化方法) Javascript-sprintf,其中下划线。字符串借用。
这是一个老问题,但我想补充一下。在现代浏览器中,你可以使用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)
这里有一个非常简单的解决方法,对我来说很有效。
首先声明一个变量来保存你的号码。
var number;
现在将数字转换为字符串,并将其保存在另一个变量中;
var numberStr = number.toString();
现在你可以测试这个字符串的长度,如果它小于你想要的长度,你可以在开头追加一个' 0 '。
if(numberStr.length < 2){
number = '0' + number;
}
现在根据需要使用数字
console.log(number);
AS数据类型在Javascript中是动态确定的,它将04视为4 如果值小于10,则使用条件语句,然后在其前面添加0,使其成为字符串 例如,
var x=4;
x = x<10?"0"+x:x
console.log(x); // 04
我知道这是一个古老的帖子,但我想提供一个更灵活和面向对象的解决方案选项。
我已经推断了接受的答案,并扩展了javascript的Number对象,以允许可调的零填充:
Number.prototype.zeroPad =函数(数字){ Var循环=数字; Var 0 = ""; While(循环){ 零+= "0"; 循环,; } 返回(this.toString()。长度为>位数)? this. tostring ():(0 + this).slice(-digits); } Var v = 5; console.log (v.zeroPad (2));//返回"05" console.log (v.zeroPad (4));//返回"0005"
编辑:添加代码以防止截断比要求的数字更长的数字。
注意:除了IE,这在其他所有浏览器中都是过时的。请改用padStart()。