Я не совсем уверен, что я понимаю ваше дело приращения и то, что вы хотите показать. Однако я решил перезвонить на решение для форматирования номера.
У меня есть две версии подпрограммы с числовым форматом, одна из которых анализирует массив, а другая - с регулярным выражением. Я признаю, что они не самые легкие для чтения, но я получил удовольствие от подхода.
Я попытался описать строки с комментариями в случае, если вы любопытны
Массив разборе версия:
function formatNum(num) {
//Convert a formatted number to a normal number and split off any
//decimal places if they exist
var parts = String(num).replace(/[^\d.]-/g,'').split('.');
//turn the string into a character array and reverse
var arr = parts[0].split('').reverse();
//initialize the return value
var str = '';
//As long as the array still has data to process (arr.length is
//anything but 0)
//Use a for loop so that it keeps count of the characters for me
for(var i = 0; arr.length; i++) {
//every 4th character that isn't a minus sign add a comma before
//we add the character
if(i && i%3 == 0 && arr[0] != '-') {
str = ',' + str ;
}
//add the character to the result
str = arr.shift() + str ;
}
//return the final result appending the previously split decimal place
//if necessary
return str + (parts[1] ? '.'+parts[1] : '');
}
Обычная версия Expression:
function formatNum(num) {
//Turn a formatted number into a normal number and separate the
//decimal places
var parts = String(num).replace(/[^\d.]-/g,'').split('.');
//reverse the string
var str = parts[0].split('').reverse().join('');
//initialize the return value
var retVal = '';
//This gets complicated. As long as the previous result of the regular
//expression replace is NOT the same as the current replacement,
//keep replacing and adding commas.
while(retVal != (str = str.replace(/(\d{3})(\d{1,3})/,'$1,$2'))) {
retVal = str;
}
//If there were decimal points return them back with the reversed string
if(parts[1]) {
return retVal.split('').reverse().join('') + '.' + parts[1];
}
//return the reversed string
return retVal.split('').reverse().join('');
}
Предполагая, что вы хотите выводить отформатированное число каждую секунду, увеличиваемую на 0,54, вы можете используйте интервал, чтобы сделать ваш инкремент и вывод.
сверхкоротких Firefox с Firebug только пример:
var num = 1412015;
setInterval(function(){
//Your 0.54 value... why? I don't know... but I'll run with it.
num += 0.54;
console.log(formatNum(num));
},1000);
Вы можете увидеть все это в действии здесь: http://jsbin.com/opoze
Спасибо, я не делаю, что много JavaScript, можно форматировать число вроде 1412016? – RailsSon
Обновлен мой код, чтобы включить форматтер. – RaYell
Ваш код применим только к номерам больше 6. Что делать, если он хочет 1,548? –