【问题标题】:How to use NumberFormat in Javascript?如何在 Javascript 中使用 NumberFormat?
【发布时间】:2019-08-15 22:42:24
【问题描述】:

我希望我的倒数计时器显示两位数,例如“53:00”而不是“53:0”。不知道这里出了什么问题?谢谢!

function convertSeconds(s) {
    var min = Math.floor(s / 60);
    var sec = s % 60;
    return nf(min, 2) + ':' + nf(sec, 2);
  }

【问题讨论】:

  • 这取决于nf() 是什么——您需要将该代码添加到您的问题中。
  • 以为是数字格式?我是否需要使其成为自己的功能并使用 nf 引用它?你希望看到什么额外的代码?抱歉,编码新手。感谢您的宝贵时间!
  • 如果您的代码正常工作,那么在某处写有一个 nf() 函数 - 例如,在您包含的库中,它不是 JavaScript 的内置部分。
  • nf 不是内置的 Javascript 函数,您需要显示它的定义位置,否则无法分辨它是什么以及它的作用。

标签: javascript number-formatting


【解决方案1】:

nf() 函数应该是这样的:

function nf(num){
    if(num < 10){
        return "0"+num;
    }
    return num;
}

console.log(nf(7));
// 07
console.log(nf(11));
// 11

【讨论】:

  • 条件不需要转换成字符串。 return n &lt;= 9 ? '0' + n : n; 会稍微短一些……
【解决方案2】:

如果nf() 是指将Number 格式化为给定数字的string 的函数,则可以是它的实现:

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

演示:

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = s % 60;
  return nf(min, 2) + ':' + nf(sec, 2);
}

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

console.log(nf(4,2));

【讨论】:

    【解决方案3】:

    你可以补零

    function nf(num, places) {
      var s = '0' + num;
      return s.slice(places * -1);
    }
    
    function convertSeconds(s) {
      var min = Math.floor(s / 60);
      var sec = s % 60;
      return nf(min, 2) + ':' + nf(sec, 2);
    }
    

    应该得到你想要的

    【讨论】:

    • 在你的代码栈中一定有一个 nf(),我希望上面的代码有一个不同的名字,因为 nf() 的当前行为/依赖是未知的。
    【解决方案4】:

    您可以使用padStart() 来确保字符串具有一定的长度。如果不是,它会用你想要的任何东西填充它。在这种情况下0

    const nf = (n, c) => n.toString().padStart(c, '0');
    
    function convertSeconds(s) {
      var min = Math.floor(s / 60);
      var sec = (s % 60)
      return nf(min, 2) + ':' + nf(sec, 2);
    }
    
    console.log(convertSeconds(64))
    console.log(convertSeconds(119))

    不确定是否要填充“不”的分钟数。

    还有Intl.NumberFormat(),它有一个最小位数的选项(尽管这似乎有点过分了):

    console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(2));
    
    console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(59));

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多