【问题标题】:format decimal in javascript在javascript中格式化十进制
【发布时间】:2013-11-11 23:02:53
【问题描述】:

我想将十进制值格式化为特定格式 1.23 应使用 javascript 显示为 0001.23。 javascript中是否有诸如toPrecision(),tofixed()之类的特定函数来处理这些格式或任何指针以继续进行任何解决方案? 这里前面的小数是动态的。 例如 : 我有 2 个值: 第一个值:99.4545 第二个值:100.32 在这第二个值在小数点前具有较高的长度 (3),而第一个值在小数点后具有较高的长度 (4)。所以减去的结果(0.8655)应该格式化为###.####(000.8685)

谢谢

【问题讨论】:

标签: javascript decimalformat


【解决方案1】:

只需创建一个功能来满足您的需求。这是一个示例,您可以根据需要进行扩展。

function pad(num, padSize){
  var numString = "" + num.split('.')[0];
  if(num.length < padSize){
    var numZeroes = padSize-num.length;
    var zeroes = "";
    while(numZeroes){zeroes += "0"; numZeroes--;}
    return zeroes + num;
  }else return num;
}

【讨论】:

    【解决方案2】:

    如果您想在 1.23 上添加一些 0,您可以执行以下操作

    var value = 1.23
    
    value = ("0000000"+ value).slice(-7);
    

    将 -7 更改为您想要的字符串总长度,包括小数点。

    问题编辑后添加

    上面应该可以处理您的问题预编辑,但对于其余部分,您将需要这样的东西。

    var formatNum = function (num, preLen, postLen) {
      var value = num.split("."),
      padstring = "0";
      padLen = (preLen > postLen)?preLen:postLen;
    
      for (i = 0; i < padLen; i++) {
         padstring += padstring;
      }
      if (typeof(value[1]) === "undefined") {
        value[1] = "0";
      }
    
      return ((padstring + value[0]).slice(-preLen)+ "." + (value[1] + padstring).substring(0,postLen));
    }
    

    这需要您希望格式化的数字以及您希望每个字符串位于“.”两侧的长度。它还处理整数的情况。

    如果您希望它输出任何其他情况,例如返回整数,则必须将其添加进去。

    【讨论】:

      【解决方案3】:

      尝试使用字符串,例如“000”+某个值

      【讨论】:

      • 这只会在前面添加三个“0”,无论如何他可能想要小数点前的 5 位数字。例如100.45 应该是 0100.45
      • 他可以尝试将字符串与数字联系起来,你的想象力在哪里,编程大师?
      • 如果你知道一些微积分 - 0001.23 不是数学陈述
      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多