Задать вопрос
dzheka3d
@dzheka3d

Как разбить число на части?

Всем привет, вот пробую с помощью такого кода в javascript разбивать числа до 3 делений (например 25000 разбить на 25 000)
$('#money').live('keyup', function(){
		var numb = $('#money_sum').val();
		numb = numb.replace(" ", "");
		numb = numb.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
		$('#money_sum').val(numb);	
	})


Но если дело доходит до числа, более 9 999 999, то результат получается такой 1 000 0 000. Подскажите пожалуйста в чем ошибка?
И еще, код срабатывает, когда я ввожу числа, но когда нажимаю backspace, чтобы удалить одну из цифр, код не срабатывает, как можно организовать и эту функцию?
  • Вопрос задан
  • 2063 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
miraage
@miraage
Старый прогер
https://gist.github.com/miraage/d00534fedd7d330a3849

/**
 * Format number from 5251.25 to "5 251.25"
 * 
 * @param num
 * @returns {string}
 */
function numberFormat(num) {
    if (!isFinite(num)) {
        return num;
    }
    
    var parts = num.toString().split('.');
 
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
 
    return parts.join('.');
}
Ответ написан
Комментировать
function numberFormat(num) {
  if (typeof num !== "string") {
    return numberFormat(num.toString())
  } else {
    if (num.length < 4) {
      return num
    } else {
      return numberFormat(num.slice(0, num.length - 3)) + " " + num.slice(num.length - 3)
    }
  }
}
Ответ написан
@coderlex
/**
 * Formats given number with comas, i.e for given
 * `12345` returns `"12,345"`.
 * The second (optional) argument redefines default
 * thouthands delimiter (comma).
 */
thouthands: function(n, delim) {
	delim = delim != undefined ? delim : ','
	x = (n + '').split('.')
	x1 = x[0]
	x2 = x.length > 1 ? '.' + x[1] : ''
	var rgx = /(\d+)(\d{3})/
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + delim + '$2')
	}
	return x1 + x2
}
Ответ написан
Комментировать
dzheka3d
@dzheka3d Автор вопроса
Та же история, только теперь 10 млн разбиваются так 1000 0000,
100 млн разбиваются правильно 100 000 000
1 млрд уже такой 100000 0000
И вот так через раз
Ответ написан
function myFunc(count){
    let event = count.toFixed(2);
    event = parseFloat(event);
    return event.toLocaleString();
};

myFunc(1005006.525);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы