Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2021, 16:14
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 114

Какой лучший способ проверки целого?
Как лучше всего решается известная проблема "0.1 * 0.2" ?

alert(0.1 * 0.2)


Здесь предлагают такое:

function strip(number) {
    return (parseFloat(number).toPrecision(12));
}

Является ли это решение оптимальным? Почему? Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2021, 16:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,276

jaroslav.tavgen,
alert((1 * 2) / (10 * 10))
Ответить с цитированием
  #3 (permalink)  
Старый 18.04.2021, 15:13
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 114

Сообщение от рони Посмотреть сообщение
jaroslav.tavgen,
alert((1 * 2) / (10 * 10))
Не понял смысл этого ответа

(0.1*0.2)/(10*10) // 0.00020000000000000004
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2021, 15:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,276

Сообщение от jaroslav.tavgen
Не понял смысл этого ответа
что мешает использовать целые числа, если нужна особая точность?
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2021, 15:54
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 114

Сообщение от рони Посмотреть сообщение
что мешает использовать целые числа, если нужна особая точность?
Я сейчас выясняю этот вопрос, как это вообще лучше всего делать. Там же тоже не всё так просто: когда ты начинаешь делить целые числа или извлекать из них корень, тоже возникают дроби, и надо понимать, как это правильно использовать. Как запятые расставлять, что использовать: floor, ceiling или round, и т.д.
Ответить с цитированием
  #6 (permalink)  
Старый 18.04.2021, 16:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,276

умножение чисел
jaroslav.tavgen,
const multiply = (a, b) => {
    let n = 1;
    while (a != Math.trunc(a)) {
        a *= 10;
        n *= 10;
    }
    while (b != Math.trunc(b)) {
        b *= 10;
        n *= 10;
    }
    return a * b / n
}
alert(multiply(.1, .2));

Последний раз редактировалось рони, 18.04.2021 в 16:06.
Ответить с цитированием
  #7 (permalink)  
Старый 18.04.2021, 16:17
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 114

рони,
const multiply = (a, b) => {
    let n = 1;
    while (a != Math.trunc(a)) {
        a *= 10;
        n *= 10;
    }
    while (b != Math.trunc(b)) {
        b *= 10;
        n *= 10;
    }
    return a * b / n
}
alert(multiply(-8.87, -8.87));
Ответить с цитированием
  #8 (permalink)  
Старый 18.04.2021, 17:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 30,276

jaroslav.tavgen,

const multiply = (...arg) => {
    let n = 1;
    return arg.reduce((a, b) => {
        b = b.toString().split('.');
        if (b[1]) n *= Math.pow(10, b[1].length);
        return a *= b.join('');

    }, 1) / n
}
alert(multiply(-8.87, -8.87));
alert(multiply(-8.87, -8.87, -8.87, -8.87));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой универсальный способ фиксировать в БД факт покидания пользователем страницы? raja Общие вопросы Javascript 2 13.12.2019 10:40
Вывод даты. Какой способ лучше? Apollon Общие вопросы Javascript 6 06.11.2013 09:20
Лучший способ преобразовать строку из одного вида в другой? Sinist3r Общие вопросы Javascript 2 27.09.2013 20:02
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 10:56
Какой способ задания значения переменной в javascript коде корректен user_robot Общие вопросы Javascript 3 08.12.2009 16:25