Телефон: +7 (926) 245-03-63

Javascript и форматирование чисел

javascript, форматирование цифр, float, number, string, fixed format

Форматирование чисел средствами javascript

Javascript и форматирование чисел решаем извечную проблему раз и навсегда одной функцией.

Прибираясь в очередной раз в своих кодах перед стартом проекта orion5.ru наткнулся на проблему с форматированием дробных и целых чисел. В свое время я решал, эту проблему, но в ограниченном варианте. В этот раз, используя случай, решил полностью раз и навсегда закрыть этот вопрос.
Цели:

  • Корректное отображение цифр после точки в дробной части
  • Корректное отображение разрядов в числе
  • Легкость вызова

Вот что получилось

Пример кода

// _____________________________________________________________________________
// Преобразует число в строку формата 1_separator000_separator000._decimal
function sdf_FTS(_number,_decimal,_separator)
// сокращение переводится как Float To String
// sd_ - понятно и так почему :) 
// _number - число любое, целое или дробное не важно
// _decimal - число знаков после запятой
// _separator - разделитель разрядов
{
// определяем, количество знаков после точки, по умолчанию выставляется 2 знака
var decimal=(typeof(_decimal)!='undefined')?_decimal:2;

// определяем, какой будет сепаратор [он же разделитель] между разрядами
var separator=(typeof(_separator)!='undefined')?_separator:'';

// преобразовываем входящий параметр к дробному числу, на всяк случай, если вдруг
// входящий параметр будет не корректным
var r=parseFloat(_number)

// так как в javascript нет функции для фиксации дробной части после точки
// то выполняем своеобразный fix
var exp10=Math.pow(10,decimal);// приводим к правильному множителю
r=Math.round(r*exp10)/exp10;// округляем до необходимого числа знаков после запятой

// преобразуем к строгому, фиксированному формату, так как в случае вывода целого числа
// нули отбрасываются не корректно, то есть целое число должно 
// отображаться 1.00, а не 1
rr=Number(r).toFixed(decimal).toString().split('.');

// разделяем разряды в больших числах, если это необходимо
// то есть, 1000 превращаем 1 000
b=rr[0].replace(/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g,"\$1"+separator);
r=b+'.'+rr[1];

return r;// возвращаем результат
}

Подробнее можно посмотреть рабочий пример по ссылке.

Интересное в интернете: Игровые автоматы слоты скачать