@Azperin
Дилетант

Как правильно решать вопрос с математикой в JS?

Про 0.1 + 0.2 я знал давно, но вот сегодня неожиданно столкнулся с тем, что и 1.005 * 1000 = 1004.9999999999999, чуть не запоров мне весь сайт.
Вопрос в том, как правильно и без ошибок инкрементить тогда проценты ? тоесть мне надо было за каждую итерацию прибавлять по половине процента 100% + 0.5%, во избежания каких либо проблем, думал что перевод в целочисленную сторону сработает, но оказалось наоборот.
Вобщем, как вы решаете подобные проблемы ?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
Сначала умножаете, а потом делите. Вам нужно умножить на 0.5%, а это 1005/1000 ;)
const myValue = 1000;

return myValue * 1005 / 1000;
// ну или 
return myValue + myValue * 5 / 1000;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AngReload
@AngReload
Кратко о себе
Не очень понятно, откуда у вас появляется число 1.005.
Если оно записано в коде, то вместо 1.005 * 1000 просто пишите 1005
Если оно приходит из инпута, то вместо приведения к числу Number("1.005"), разделите целую и дробную часть
let [integerPart, fractionalPart] = '100.05'.match(/[0-9]+/g); // [ '100', '05']
result = Number(integerPart) * 1000 + Number(fractionalPart);


Если что-то сложнее, то пользуйтесь библиотеками типа https://github.com/MikeMcl/big.js/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Digital Sharks Казань
от 60 000 до 65 000 руб.
Ingram Micro Cloud Москва
от 170 000 руб.
Alternativa Games Пермь
от 40 000 до 80 000 руб.
16 янв. 2019, в 14:53
20000 руб./за проект
16 янв. 2019, в 14:52
3000 руб./за проект
16 янв. 2019, в 14:26
50 руб./за 1000 зн.