@Azperin
Дилетант

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

Про 0.1 + 0.2 я знал давно, но вот сегодня неожиданно столкнулся с тем, что и 1.005 * 1000 = 1004.9999999999999, чуть не запоров мне весь сайт.
Вопрос в том, как правильно и без ошибок инкрементить тогда проценты ? тоесть мне надо было за каждую итерацию прибавлять по половине процента 100% + 0.5%, во избежания каких либо проблем, думал что перевод в целочисленную сторону сработает, но оказалось наоборот.
Вобщем, как вы решаете подобные проблемы ?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 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/
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы