Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Округление до нужного количества знаков после запятой (https://javascript.ru/forum/misc/2860-okruglenie-do-nuzhnogo-kolichestva-znakov-posle-zapyatojj.html)

Shurik_ 18.02.2009 18:49

Округление до нужного количества знаков после запятой
 
Привет всем! В отличии от 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().

ZoNT 18.02.2009 19:01

alert(123.3453346.toFixed(3));

Андрей Параничев 18.02.2009 19:19

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


Поэтому лучше использовать его в комбинации с parseFloat:
alert(typeof parseFloat(123.3453346.toFixed(3))); // "number"

Kolyaj 18.02.2009 20:14

Цитата:

Сообщение от Андрей Параничев
toFixed возвращает значение типа string

А зачем еще может потребоваться округлить число до знака после запятой?

Shurik_ 18.02.2009 20:28

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

Я думаю, в любом случае. в разделе "аналоги функций PHP" нужно указать аналог функции round() с использованием toFixing.

Kolyaj 18.02.2009 23:45

Цитата:

Сообщение от Shurik_
хотя логически это чисто математическая штука должна быть

В компьютерах немножко другая арифметика, нежели в школе, и там, по большому счету, подобное округление бессмысленно.

Андрей Параничев 19.02.2009 00:00

Kolyaj,
Цитата:

Сообщение от Kolyaj
А зачем еще может потребоваться округлить число до знака после запятой?

Может ты и прав, я не встречал таких задач, но думаю, что они бывают.

iyaki 10.12.2014 17:16

x.toFixed(n)/1;
так кажись проще

danik.js 10.12.2014 17:26

Вот тоже не понимаю зачем округлять, если нужны дальнейшие вычисления. Тогда же ошибка будет накапливаться.
Какая разница сколько знаков хранится в памяти. А вот при выводе уже можно урезать.

ruslan_mart 10.12.2014 18:03

alert(typeof +3.3453346.toFixed(3)); // "number"


Часовой пояс GMT +3, время: 16:26.