Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Разделить число на разряды (https://javascript.ru/forum/events/24601-razdelit-chislo-na-razryady.html)

simple 07.01.2012 09:54

Разделить число на разряды
 
Нашел в сети вот такое регулярное выражение:
str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');

Не знаете что тут можно добавить или удалить чтобы она, число после десятичной точки на разряды не разделяла, а то это выглядит так:
1 234 567.1 234

Pavel M. 07.01.2012 12:30

если строка содержит число с десятичной точкой, то просто уберите конец строки $
alert('123456789.123456789'.replace(/(\d)(?=(\d\d\d)+([^\d]))/g, '$1 '));

nerv_ 07.01.2012 14:09

Pavel M., а если не содержит?)

Пока приходит в голову только это
var x = "1234567890.123456789";
			
x = x.replace(/.+?(?=\D|$)/, function(f) {
	return f.replace(/(\d)(?=(?:\d\d\d)+$)/g, "$1 ");
});
alert(x);

Aetae 07.01.2012 16:00

Цитата:

Сообщение от nerv_ (Сообщение 148567)
Pavel M., а если не содержит?)

Т.е. не содержит?:blink:

nerv_ 07.01.2012 16:22

Цитата:

Сообщение от Pavel M.
если строка содержит число с десятичной точкой, то просто уберите конец строки $

т.е. число целое)

Накопипастил для примера :)
alert('123456789.123456789'.replace(/(\d)(?=(\d\d\d)+([^\d]))/g, '$1 '));
alert('123456789'.replace(/(\d)(?=(\d\d\d)+([^\d]))/g, '$1 '));

var x = "1234567890.123456789";
x = x.replace(/.+?(?=\D|$)/, function(f) {
	return f.replace(/(\d)(?=(?:\d\d\d)+$)/g, "$1 ");
});
alert(x);

var x = "1234567890";
x = x.replace(/.+?(?=\D|$)/, function(f) {
	return f.replace(/(\d)(?=(?:\d\d\d)+$)/g, "$1 ");
});
alert(x);

Как-то не правильно тут статусы форум пишет: у меня - Профессор (кислых щей), а у Вас - Любитель :D

Aetae 07.01.2012 16:26

Статус можно поменять.)
А 2 replace - это не спортивно.

nerv_ 07.01.2012 16:42

Цитата:

Сообщение от Aetae
А 2 replace - это не спортивно.

покажИте как надо :) (если есть время и желание)

simple 07.01.2012 16:47

nerv_ спасибо, подойдет твое решение..главное работает )
вот еще вопрос почему я js не могу сделать число с дробной частью при делении, например в mysql при делении числа скажем 10000/100=100.0000

Aetae 07.01.2012 16:53

toFixed

simple 07.01.2012 16:55

мне не нужен .toFixed мне нужно именно делением делать дробь так как данные хранятся в целом виде в БД...числа если у них на конце не ноль делятся...к примеру 1001/100=10.01 а 1000/100 = 10 ((

Aetae 07.01.2012 17:06

Тебе нужно, ты и делай. Адекватный язык лишних нулей рисовать не будет.

nerv_ 07.01.2012 17:19

Цитата:

Сообщение от simple
мне не нужен .toFixed

Что же Вы не слушаете Aetae? Исходя из Ваших запросов, нужен именно он.

sovsem-nub 23.10.2015 20:48

пусть тут полежит, потом легче найти будет.

function addSpaces(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;
}


alert(addSpaces(2325454.6767));



на входе в функцию число.


Часовой пояс GMT +3, время: 08:17.