Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 10.05.2016, 20:38
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Дык работает же? Что не так там?
Ответить с цитированием
  #22 (permalink)  
Старый 10.05.2016, 20:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от aklis
Дык работает же? Что не так там?
пост 14 возьмите число оттуда и получите нужный результат.
Ответить с цитированием
  #23 (permalink)  
Старый 10.05.2016, 20:59
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

А, ну да, это число в двоичном представлении бесконечная дробь жеж. Спасибо.
Ответить с цитированием
  #24 (permalink)  
Старый 18.05.2016, 21:12
Новичок на форуме
Отправить личное сообщение для kv9923 Посмотреть профиль Найти все сообщения от kv9923
 
Регистрация: 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.
Ответить с цитированием
  #25 (permalink)  
Старый 19.05.2016, 00:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

округление чисел
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));
Ответить с цитированием
  #26 (permalink)  
Старый 21.05.2016, 16:46
Новичок на форуме
Отправить личное сообщение для kv9923 Посмотреть профиль Найти все сообщения от kv9923
 
Регистрация: 09.05.2016
Сообщений: 4

уже лучше, но 1*24.85*0.97=24.10 , а скрипт считает как 24.11.
Ответить с цитированием
  #27 (permalink)  
Старый 21.05.2016, 17:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

kv9923,
неа 21.1045 что как раз и даст при округлении до второго знака 24.11 -- вы уж определитесь как вы хотите округлять и напишите функцию с нужными вам параметрами.
Ответить с цитированием
  #28 (permalink)  
Старый 21.05.2016, 18:35
Новичок на форуме
Отправить личное сообщение для kv9923 Посмотреть профиль Найти все сообщения от kv9923
 
Регистрация: 09.05.2016
Сообщений: 4

помогите сделать "Округление к ближайшему целому" — наиболее часто используемое округление, как это описано в вики по слову "Округление". Есть конечно и другие методы, но требуется реализовать именно этот. Думаю многие пользователи будут благодарны.
Округление 21.1045 (и 21.104999) до сотых даст 21.10.
Округление 21.1050 (и 21.114999) до сотых даст 21.11.
Ответить с цитированием
  #29 (permalink)  
Старый 21.05.2016, 18:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

kv9923,
для такого округления достаточно toFixed
alert([21.1050.toFixed(2),21.1045.toFixed(2)] );
Ответить с цитированием
  #30 (permalink)  
Старый 01.03.2020, 03:35
Новичок на форуме
Отправить личное сообщение для ms-pro Посмотреть профиль Найти все сообщения от ms-pro
 
Регистрация: 18.06.2017
Сообщений: 3

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

Предлагаю Вам простую функцию, которая округляет до нужного знака.
Отлично работает, спасибо Shurik !!!)
Ответить с цитированием
Ответ



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

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