javascript - 如何通过将 0 附加到个位数数字来格式化数字?

标签 javascript number-formatting

我想将数字格式化为两位数。问题是在传递09时引起的,所以我需要将其格式化为0009 .

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/

相关文章:

javascript - 如何将php字符串转换为可调用的js函数

javascript - Vue.js - 如何在数组对象上实现计算属性?

javascript - XSL 作为 javascript 函数参数

javascript - 在 Node.js 中同步运行函数

java - 使用DecimalFormat时如何防止减号?

javascript - React 获取点击按钮的 ID

通过 sprintf() 和 fprintf() 的 Matlab ShortEng 数字格式?

javascript - jsp中显示双数时如何防止 'E'?

css - 将电源格式放入占位符时出错

c++ - 使用 ostringstream 将 double 格式化为字符串