Javascript.RU

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

Красивое округление можно получить через такую функцию:
roundNum = function(n,f){
	f = f || 0;
	return Number(n.toFixed(f).replace(/([0-9]+.[0-9]*)0+$/gi,'$1'));
}

roundNum( 130.004000, 3 ); // Возвратит 130.004
roundNum( 130.004000, 2 ); // Возвратит 130
roundNum( 130.004000, 10 ); // Возвратит 130.004


Данное округление убирает все лишние нули в конце цифры и возвращает цифровое значение.
Ответить с цитированием
  #12 (permalink)  
Старый 03.03.2015, 18:08
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

ага, а: roundNum( 0.00000001, 10 );
Возвратит: 1e-8
а: roundNum( '0.00000001', 10 );
Возвратит: TypeError: n.toFixed is not a function....


roundNum = function(n,f){
	f = f || 0;
	return Number(n.toFixed(f).replace(/([0-9]+.[0-9]*)0+$/gi,'$1'));
}
alert( roundNum( 0.00000001, 10 ) ); // Возвратит 1e-8
alert( roundNum( '0.00000001', 10 ) ); // Возвратит TypeError: n.toFixed is not a function


к тому же, регулярка - явно кривая, ну и соответственно replace()

Последний раз редактировалось Cache, 04.03.2015 в 04:14. Причина: коммент
Ответить с цитированием
  #13 (permalink)  
Старый 04.03.2015, 04:01
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

Тогда уж, как-то так:
function roundNum(n,f){
	f = f || 0;
	return (+n).toFixed(f).toString().replace(/^((.*?)\.*0+)$/g,'$2');
};

alert( roundNum( 130.004000, 2 ) ); // Возвратит 130
alert( roundNum( 130.004000, 10 ) ); // Возвратит 130.004
alert( roundNum( 100.001000, 3 ) ); // Возвратит 100.001
alert( roundNum( 2200.002000, 2 ) ); // Возвратит 2200
alert( roundNum( 3000, 10 ) ); // Возвратит 3000
alert( roundNum( 0.00000004, 10 ) ); // Возвратит 0.00000004
alert( roundNum( '0.00000005', 10 ) ); // Возвратит 0.00000005
alert( roundNum( .00000006, 10 ) ); // Возвратит 0.00000006
alert( roundNum( '.00000007', 10 ) ); // Возвратит 0.00000007
alert( roundNum( '.00000008', 3 ) ); // Возвратит 0
alert( roundNum( 90000., 3 ) ); // Возвратит 90000

Последний раз редактировалось Cache, 04.03.2015 в 04:08.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление до нужного количества знаков после запятой Shurik_ Общие вопросы Javascript 29 01.03.2020 03:35
Подсчет суммы чисел при отметке чекбоксов Garik Элементы интерфейса 11 27.07.2013 21:47
Сравнение чисел Явой ЭДИК Ваши сайты и скрипты 7 25.02.2009 23:56
Корректное округление вещественных чисел Бобр Общие вопросы Javascript 16 14.01.2009 18:21
Проблемы с парсингом чисел GodHead Общие вопросы Javascript 3 20.09.2008 20:13