Апр
30

Разделение пробелом разрядностей чисел в JavaScript

Вопрос: У меня есть ряд переменных, в которых записано некие целые, недробные числа – достаточно большие по количеству знаков. Как вставить пробелы после каждой цифровой триады (т.е. 1234567 = 1 234 567)?
Задача упрощена тем, что числа целые и не нужно отталкиваться от десятичной точки как от раздела – отсчет триад идет с конца строки. Но как сделать это кратко и красиво? На ум приходят только громоздкие конструкции.

Ответ:

1
2
3
4
5
6
7
8
9
10
11
12
<span class="post">var number=1234567;
var output='';
number+=''; // преобразуем число в строковую переменную
var start=number.length%3; //количество цифр не входящих в триаду
output+=number.substr(0,start); //вставляем их сначала
var add= (output==0)? '' : ' '; //если число кратно 3, то не нужен первый пробел
for (var i=start;i&lt;number.length-2;i+=3)
{
output+=add+number.substr(i,3);
add=' ';
}
document.write("start:"+output+":end");</span>

второй вариант:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<span class="post"><span style="font-family: Courier New;">function formatnum(str) {
var retstr = '';
var now = 0;
for (i = str.length-1; i&gt;=0; i--)
{
if (now &lt; 3)
{
now++;
retstr = str.charAt(i) + retstr;
}
else
{
now = 1;
retstr = str.charAt(i) + ' ' + retstr;
}
}
return retstr;
}</span></span>

forum.ru-board.com


Прокомментировать

Я ЧЕЛОВЕК!!!!.

В Вашем браузере отключена поддержка JavaScript! Для корректной работы Вам необходимо включить поддержку JavaScript и обновить данную страницу.
 

Рубрики

Облако меток

В прямом эфире