Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2009, 18:49
Новичок на форуме
Отправить личное сообщение для Shurik_ Посмотреть профиль Найти все сообщения от Shurik_
 
Регистрация: 05.11.2008
Сообщений: 4

Округление до нужного количества знаков после запятой
Привет всем! В отличии от PHP (функция round()), в яваскрипте нет функции округляющей до нужного знака после запятой. Есть только метод round, который округляет до целого числа.

Предлагаю Вам простую функцию, которая округляет до нужного знака.

function roundPlus(x, n) { //x - число, n - количество знаков 
  if(isNaN(x) || isNaN(n)) return false;
  var m = Math.pow(10,n);
  return Math.round(x*m)/m;
}


Предлагаю администрации портала внести эту функцию в список аналогов функций php, в качестве аналога функции round().
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2009, 19:01
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

alert(123.3453346.toFixed(3));
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2009, 19:19
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
toFixed возвращает значение типа string:
alert(typeof 123.3453346.toFixed(3)); // "string"


Поэтому лучше использовать его в комбинации с parseFloat:
alert(typeof parseFloat(123.3453346.toFixed(3))); // "number"
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2009, 20:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Андрей Параничев
toFixed возвращает значение типа string
А зачем еще может потребоваться округлить число до знака после запятой?
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2009, 20:28
Новичок на форуме
Отправить личное сообщение для Shurik_ Посмотреть профиль Найти все сообщения от Shurik_
 
Регистрация: 05.11.2008
Сообщений: 4

честно говоря, не нашел метод toFixed в справочнике, потому что он не описан в методах объекта Math, а описывается в методах объекта Number, его как бы приблизили к методам типа toString, и т.д. и возвращает он строку, хотя логически это чисто математическая штука должна быть.

Я думаю, в любом случае. в разделе "аналоги функций PHP" нужно указать аналог функции round() с использованием toFixing.
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2009, 23:45
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Shurik_
хотя логически это чисто математическая штука должна быть
В компьютерах немножко другая арифметика, нежели в школе, и там, по большому счету, подобное округление бессмысленно.
Ответить с цитированием
  #7 (permalink)  
Старый 19.02.2009, 00:00
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Kolyaj,
Сообщение от Kolyaj
А зачем еще может потребоваться округлить число до знака после запятой?
Может ты и прав, я не встречал таких задач, но думаю, что они бывают.
Ответить с цитированием
  #8 (permalink)  
Старый 10.12.2014, 17:16
Аватар для iyaki
Новичок на форуме
Отправить личное сообщение для iyaki Посмотреть профиль Найти все сообщения от iyaki
 
Регистрация: 05.12.2014
Сообщений: 9

x.toFixed(n)/1;
так кажись проще
Ответить с цитированием
  #9 (permalink)  
Старый 10.12.2014, 17:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Вот тоже не понимаю зачем округлять, если нужны дальнейшие вычисления. Тогда же ошибка будет накапливаться.
Какая разница сколько знаков хранится в памяти. А вот при выводе уже можно урезать.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 10.12.2014, 18:03
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

alert(typeof +3.3453346.toFixed(3)); // "number"
Ответить с цитированием
Ответ



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

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