【问题标题】:How to Zero-pad Float Point Numbers in Javascript and with limit on max number of digits如何在 Javascript 中对浮点数进行零填充并限制最大位数
【发布时间】:2013-11-25 00:52:03
【问题描述】:

如何用零正确填充浮点数,以便

  1. 填充后的位数为 7
  2. 小数点右边补零.
  3. 超过 7 位的数字从右侧截断

.toFixed(6) 忽略小数点 . 前的位数。

输入

9.123
9.123456
6.12345678
100.1

输出

9.123000
9.123450
6.123456
100.1000    // truncated from the right

【问题讨论】:

  • 您可以将传递给.toFixed的数字调整为小数点前的位数。
  • 看起来不难——你试过吗?
  • 如果 100,000,000 怎么办?
  • @wared 这个数字预计不会达到 100,000,000。如果是这样,我猜if 语句会将其转换为指数形式 1.0E8

标签: javascript jquery node.js underscore.js


【解决方案1】:
n.toFixed(5).substring(0, 7)

对于任何 100000 或更大的值,它都会惨遭失败。

【讨论】:

    【解决方案2】:

    这是我想变得聪明:

    Number.prototype.toTotallyFixed = function(n) {
        var s = this.toString(), a = (s + (s.indexOf('.') != -1 ? '' : '.0')).split('.');
        return a[0].length > n ? s.slice(0,n) : a[0] + (+('.'+a[1])).toFixed(n - (a[0].length-1)).slice(1);
    }
    

    FIDDLE

    【讨论】:

      【解决方案3】:

      注意结果是一个字符串:

      var n = 9.123 + '';
      if (n.length < 8) {
          n += new Array(9 - n.length).join('0');
      } else if (n.length > 8) {
          n = n.slice(0, 8);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-17
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        相关资源
        最近更新 更多