Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.04.2012, 20:54
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Из старых запасов
/**
		Функция groupNums принимает число или 
	строку, которую конвертирует по правилам
	parseFloat.
		Возвращает строку, где цифры числа
	сгруппированы по разрядам и отделены друг от
	друга пробелом. Если конвертация в число
	невозможна или число в научном формате и не
	разворачивается при конвертации, будет
	возвращено строковое представление переданного
	аргумента.
		Недесятичные числа конвертируются в 
	десятичные. Часть строки, отброшенная при
	конвертации, приписывается справа к 
	результату работы функции, т.е. можно передавать
	10000р., например.
*/
function groupNums(num){
	var 
		minus = fractionPart = firstsDigits = textPart = "",
		dotPosition,
		rawText = num + ''
	;
	num = parseFloat(rawText) + '';

	if(num === "NaN" || ~num.indexOf("e")) {// Нечисло и научный формат не обрабатываем
		return rawText;
	}

	textPart = rawText.substr(num.length);

	if(num.substr(0, 1) === "-") {// Разбор отрицательных чисел
		minus = "-";
		num = num.substr(1);
	}

	if(~(dotPosition = num.indexOf("."))) {// Разбор дробей
		fractionPart = num.substr(dotPosition);
		num = num.substr(0, dotPosition)
	}

	if(num.length < 4) {
		return rawText;
	}

	firstsDigits = num.substr(0, num.length % 3);
	num = num.substr(firstsDigits.length);
	num = num.match(/\d{3}/g).join(" ");
	firstsDigits += firstsDigits.length > 0 ? " " : "";

	return minus + firstsDigits + num + fractionPart + textPart;
}

Но на форуме точно есть решение от Kolyaj, где он делает это одной регой. Искать лень.

Последний раз редактировалось GuardCat, 01.04.2012 в 20:57.
Ответить с цитированием
  #12 (permalink)  
Старый 02.04.2012, 01:12
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Catsys, Разделение разрядов числа пробелами.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтобы клавиатурные события пропускались сквозь флешку? khusamov Общие вопросы Javascript 3 11.02.2012 16:48
как сделать, чтобы каждые 2 секунды менялся фон miguly Общие вопросы Javascript 8 18.08.2011 22:32
Как сделать так чтобы при нажатии на лого, он возвращал на главную страницу. Severance Flash 2 01.04.2011 16:25
Как сделать чтобы у textarea увеличивался rows с каждой новой строчкой rusbody Общие вопросы Javascript 1 19.03.2011 16:43
Как сделать, чтобы выпадающее меню оставалось развернутым? Эдгар Элементы интерфейса 1 28.02.2011 19:43