Math.round () добавление ведущих нулей - PullRequest
0 голосов
/ 10 февраля 2012
<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>

Это тикер, который обновляется каждую секунду, вычитая переменную вычитать из числа.К сожалению это больше не тикает.У меня было все хорошо, когда я не пытался сделать toFixed (), чтобы держать нули в десятичном разряде.1004 *

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

И это тоже не сработало, в какой-то момент я получил NaN.

1 Ответ

1 голос
/ 10 февраля 2012

Ваш 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;
}

или проверить эту тему Как вывести целые числа с ведущими нулями в JavaScript

...