我想将数字格式化为两位数。问题是在传递0
–9
时引起的,所以我需要将其格式化为00
–09
.
JavaScript 中有数字格式化程序吗?
最佳答案
编辑(2021):
不再需要像这样手动格式化数字。这个答案是在遥远的 2011 年写的,那时 IE 很重要,babel 和 bundlers 只是一个美好而充满希望的梦想。
我认为删除这个答案是错误的;但是,如果您发现自己在这里,我想请您注意 second highest voted answer to this question截至本次编辑。
为您介绍.toLocaleString()
的使用方法使用 {minimumIntegerDigits: 2}
的选项参数.激动人心的东西。为了方便起见,下面我使用此方法重新创建了原始答案中的所有三个示例。
[7, 7.5, -7.2345].forEach(myNumber => {
let formattedNumber = myNumber.toLocaleString('en-US', {
minimumIntegerDigits: 2,
useGrouping: false
})
console.log(
'Input: ' + myNumber + '\n' +
'Output: ' + formattedNumber
)
})
原答案:
我发现的最佳方法如下:
(注意这个简单的版本只适用于正整数)
var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);
对于小数,您可以使用此代码(虽然有点草率)。
var myNumber = 7.5;
var dec = myNumber - Math.floor(myNumber);
myNumber = myNumber - dec;
var formattedNumber = ("0" + myNumber).slice(-2) + dec.toString().substr(1);
console.log(formattedNumber);
最后,如果您必须处理负数的可能性,最好存储符号,将格式应用于数字的绝对值,并在事后重新应用符号。请注意,此方法不会将数字限制为 2 个总数字。相反,它仅将数字限制在小数点左侧(整数部分)。 (确定符号的行已找到 here)。
var myNumber = -7.2345;
var sign = myNumber?myNumber<0?-1:1:0;
myNumber = myNumber * sign + ''; // poor man's absolute value
var dec = myNumber.match(/\.\d+$/);
var int = myNumber.match(/^[^\.]+/);
var formattedNumber = (sign < 0 ? '-' : '') + ("0" + int).slice(-2) + (dec !== null ? dec : '');
console.log(formattedNumber);
关于javascript - 如何通过将 0 附加到个位数数字来格式化数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043026/