Math.round()添加前导零

时间:2012-02-10 06:31:43

标签: javascript jquery html jquery-mobile

<script type="text/javascript">
  var m$ = jQuery.noConflict();
  m$(document).ready(function(){
    num =  623000;
    prev = 623556;  
    subtract = num - prev;
    subtract /= 24;
    subtract /= 60;
    subtract /= 60; 

    var timerID = setInterval(function() {
      if(num > 0){
    subtract *= 1000;
    subtract = Math.round(subtract);
    subtract /= 1000;
    num -= subtract;
    num *= 10000;
    num /= 10000;
    num = Math.round(num).toFixed(3);
    m$('.dynamic').html(addCommas(num));
      }
      else {
        clearInterval(timerID);
      }
    }, 1000 );
});

function addCommas(nStr){
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}
</script>

通过从num减去变量减去每秒更新的股票代码。不幸的是,它不再下降。当我没有尝试使用toFixed()将零保持在小数位时,我已经把它弄好了。

我用Google搜索了它并说它应该通过执行以下操作来使用字符串:

numstr = Math.round(num + "").toFixed(3);

这也不起作用,有一次我得到了NaN。

1 个答案:

答案 0 :(得分:1)

您的num为623000且subtract仅为-0.006,而您在循环中舍入num。那么,你期待什么? Math.round(623000 - (-0.006)) = 623000并且它总是相同的数字。

如果你想为前缀加零,那么你应该在输出中做,而不更新保存数值的变量。

ps:

的目的是什么
num *= 10000;
num /= 10000;

?可能num = Math.round(num)应该在他们之间,这就是你问题的原因吗?

您可以使用此功能填充前导零的数字

function pad(number, length) {
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }

    return str;
}

或查看此主题How to output integers with leading zeros in JavaScript