Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/85: Рейтинг темы: голосов - 85, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 29.01.2009
Сообщений: 17
1

Округление до 2-х знаков в дробной части

13.04.2009, 16:41. Просмотров 15899. Ответов 9
Метки нет (Все метки)

Как в JS округлить число до 2-х знаков после запятой?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2009, 16:41
Ответы с готовыми решениями:

До 2-х знаков в дробной части округление
Как в JS округлить число до 2-х знаков после запятой? Спасибо.

Вывести набор символов, изображающих первые N цифр дробной части вещественного числа
1)Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (>...

Сортировка массива по дробной части
Здравствуйте всем! Пытаюсь вывести массив в порядке возрастания их дробной части. выводит:...

Округление константы (более 15 знаков в дробной части)
Здравствуйте, уважаемые форумчане! Решаю несложную задачу, но возникают некоторые проблемы. Есть...

9
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
13.04.2009, 16:52 2
не знаю как в JS, но матаппарат такой:

x = m * 10^p

x - любое число, m - мантисса, p - порядок в экспоненциальном представлении. m = 0, 1 <= m < 10.

p = [lg abs(x)], если x != 0. [] означает 'целая часть'. Если x = 0, p = 0.

m = x / 10^p.

Что нужо сделать, чтобы округлить только до двух после запятой? Понизить порядок на 2.

p1 = p - 2; m1 = x / 10^p1;

Теперь округляем m1 как обвчное число. После округления умножаем на 10^p1.

Все
1
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
13.04.2009, 16:54 3
Уточнение

x = m * 10^p,

где m = 0 или 1 <= abs(m) < 10; p >= 0, p - целое число.

Это справедливо для любых действительных чисел x.
0
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
13.04.2009, 17:01 4
Это общий случай.

Но есть еще проще: выдели дробную часть. Умнож на 100. Округли. Раздели на 100. Сложи целую часть округляемого числа и только что полученное частное.
0
0 / 0 / 0
Регистрация: 16.02.2009
Сообщений: 18
18.04.2009, 11:57 5
Код
function formatFloat(src,digits) {
	var powered, tmp, result
	// make sure it is number
	if (isNaN(src))
		return src;
	// 10^digits
	var powered = Math.pow(10,digits);
	
	var tmp = src*powered;
	
	// round tmp
	tmp = Math.round(tmp);
	
	// get result
	var result = tmp/powered;
	return result;
}
0
2 / 2 / 0
Регистрация: 22.02.2010
Сообщений: 14
03.08.2012, 13:13 6
Оживлю темку за 2003 год
Javascript
1
2
Math.decimalPlaces = function(num, p){return Math.round(num*(Math.pow(10,p)))/Math.pow(10,p)};
// Math.decimalPlaces(12322.1223,2) => 12322.12
еще есть вариант это сделать так
Javascript
1
2
decimalPlaces = function(num, p){var a=(''+num); return parseFloat(a.substr(0, a.indexOf('.')+(++p)))}
// decimalPlaces(12312312.1212, 3) => 12312312.121
Буду благодарен кто бенчмаркингом определить какой способ быстрей.
0
супермизантроп
Эксперт JS
3811 / 2897 / 682
Регистрация: 18.04.2012
Сообщений: 8,494
03.08.2012, 13:26 7
avastor, а чем вас не устраивает метод numObj.toFixed ([fractionDigits]) ?

Товарищей из 2003 года я понимаю - тогда этого метода в Javasript'e ещё не было.
Но сейчас-то зачем огород городить?
1
2 / 2 / 0
Регистрация: 22.02.2010
Сообщений: 14
03.08.2012, 15:17 8
Без комментарий
var a = 12312.229
Javascript
1
2
3
4
a.toFixed(2)
// a.toFixed(2) => 12312.2[B]3[/B]
Math.decimalPlaces(a)
// Math.decimalPlaces(a) => 12312.2[B]2[/B]
Добавлено через 3 минуты
И еще есть жалобы на IE с этим методом
http://javascript.ru/Number/toFixed#comment-6102
достоверность не проверял.

Добавлено через 5 минут
И поповоду 2003 года

Если посмотреть здесь
http://www.w3schools.com/jsref/jsref_tofixed.asp
Этот чудо метод, был введен в
JavaScript Version: 1.5
И посмотреть здесь
http://ru.wikipedia.org/wiki/JavaScript
пункт Версии
***
1.5 (Netscape 6.0, ноябрь 2000; также поздние версии Netscape и Mozilla
Редакция 3 (декабрь 1999). Совместим с третьей редакцией спецификации ECMA-262.
***
То есть ребятам в 2003 году, была уже доступна версия 1.5 и этот метод

Добавлено через 11 минут
P.S. Хотя если человеку нужно было округления, то указанным вами метод вполне подходит, если округлять не нужно, а просто вернуть с количеством знаков после запятой, то мой метод
0
супермизантроп
Эксперт JS
3811 / 2897 / 682
Регистрация: 18.04.2012
Сообщений: 8,494
03.08.2012, 15:18 9
avastor, заголовок темы перечитайте. Она называется ОКРУГЛЕНИЕ.
Ваш же скрипт производит ОТСЕКАНИЕ.

Что есть "округление" - можете узнать здесь.
-----

Ребята по вашей первой ссылке - http://javascript.ru/Number/toFixed#comment-6102 - также, как и вы, тоже не знают про эту математическую операцию, потому и жалуются.
-----

В 2003 году самым популярным был браузер Microsoft Internet Explorer 5.0, в котором работала версия Microsoft JScript 5.0 (не путать с JavaScript - у Майкрософта всё своё).
И этого метода в версии JScript 5.0 не было.
Он появился только начиная с версии JScript 5.5 и в браузере Microsoft Internet Explorer 5.5 (с июля 2001 года).
И этот браузер очень многие себе в те времена не ставили, ибо был он очень тормозным и глючным, и - главное - занимал много места на жёстком диске (а место тогда ценилось, ибо винчестеры были ещё очень дорогими).
0
2 / 2 / 0
Регистрация: 22.02.2010
Сообщений: 14
03.08.2012, 17:13 10
злой дядя
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2012, 17:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Округление дробной части
В строке содержится список десятичных чисел, содержащих целую и дробную части, разделенные точкой....

Округление дробной части
Помогите пожалуйста!!! Как реализовать метод округления дробной части до 0,1 (0,36 -&gt; 0,4; 0,...

Округление дробной части
В результате вычислений имеем дробное число. Задача в том, что нужно округлить его то трёх знаков...

Округление дробной части числа
Подскажите плз, как мне сделать что бы из этого - 0.09765625 вышло - 10, или 0.56640625 - 57....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.