|
10.05.2016, 20:38
|
Кандидат Javascript-наук
|
|
Регистрация: 27.04.2015
Сообщений: 99
|
|
Дык работает же? Что не так там?
|
|
10.05.2016, 20:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от aklis
|
Дык работает же? Что не так там?
|
пост 14 возьмите число оттуда и получите нужный результат.
|
|
10.05.2016, 20:59
|
Кандидат Javascript-наук
|
|
Регистрация: 27.04.2015
Сообщений: 99
|
|
А, ну да, это число в двоичном представлении бесконечная дробь жеж. Спасибо.
|
|
18.05.2016, 21:12
|
Новичок на форуме
|
|
Регистрация: 09.05.2016
Сообщений: 4
|
|
да, округление из поста 12 точно работает. Спасибо автору.
Попутно, подскажите, как правильно перемножить числа для дальнейшего округления:
90*24.85*0.97=2169.405 // выдает калькулятор, excel и тд
90*24.85*0.97=2169.4049999999997 // выдает javascript и округлялка соответственно неверно работает. Вместо 2169.41, выдает 2169.40.
|
|
19.05.2016, 00:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
округление чисел
kv9923,
а так?
Number.prototype.round = function(base) {
if (base == null || base < 0) return this;
var string = this.toString();
var point_index = string.indexOf(".");
if (point_index == -1) return this;
var symbol_index = point_index + 1 + base;
if (symbol_index >= string.length) return this;
var max_fractional = Math.pow(10, base);
var up = 0;
string = string.split("");
for (var i = string.length - 1; i >= symbol_index; i--) {
if (point_index == i) continue;
up = (string[i] = +string[i] + up) >= 5 ? 1 : 0;
string[i] %= 10
}
string.length = symbol_index;
return +(+string.join("") + up / max_fractional).toFixed(base)
};
var a = 90*24.85*0.97 ;
alert(a.round(2));
|
|
21.05.2016, 16:46
|
Новичок на форуме
|
|
Регистрация: 09.05.2016
Сообщений: 4
|
|
уже лучше, но 1*24.85*0.97=24.10 , а скрипт считает как 24.11.
|
|
21.05.2016, 17:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
kv9923,
неа 21.1045 что как раз и даст при округлении до второго знака 24.11 -- вы уж определитесь как вы хотите округлять и напишите функцию с нужными вам параметрами.
|
|
21.05.2016, 18:35
|
Новичок на форуме
|
|
Регистрация: 09.05.2016
Сообщений: 4
|
|
помогите сделать "Округление к ближайшему целому" — наиболее часто используемое округление, как это описано в вики по слову "Округление". Есть конечно и другие методы, но требуется реализовать именно этот. Думаю многие пользователи будут благодарны.
Округление 21.1045 (и 21.104999) до сотых даст 21.10.
Округление 21.1050 (и 21.114999) до сотых даст 21.11.
|
|
21.05.2016, 18:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
kv9923,
для такого округления достаточно toFixed
alert([21.1050.toFixed(2),21.1045.toFixed(2)] );
|
|
01.03.2020, 03:35
|
Новичок на форуме
|
|
Регистрация: 18.06.2017
Сообщений: 3
|
|
Сообщение от Shurik_
|
Привет всем! В отличии от PHP (функция round()), в яваскрипте нет функции округляющей до нужного знака после запятой. Есть только метод round, который округляет до целого числа.
Предлагаю Вам простую функцию, которая округляет до нужного знака.
|
Отлично работает, спасибо Shurik !!!)
|
|
|
|