Ошибка в JS формуле

Почему выдает 1.25101 ?

Должно быть 1.25102

function numTick(price, tick) {
    if (parseFloat(tick) == 0) return Number(price);
    let prec = (String(tick).split('.')[1] || '').length;
    let x = (parseInt(price / tick) * tick).toFixed(prec);
    return Number(x);
}
console.log(numTick(1.25102, 0.00001));


Ответы (1 шт):

Автор решения: Oliver Patterson

У вас было лишнее parseInt.

function numTick(price, tick) {
    if (parseFloat(tick) == 0) return Number(price);
    let prec = (String(tick).split('.')[1] || '').length;
    let x = ((price / tick) * tick).toFixed(prec); // Вот тут
    return Number(x);
}
console.log(numTick(1.25102, 0.00001));

Как подсказал в комментариях @Grundy, можно обойтись без умножения и деления.

function numTick(price, tick) {
    if (parseFloat(tick) == 0) return Number(price);
    let prec = (String(tick).split('.')[1] || '').length;
    let x = price.toFixed(prec); // Вот тут
    return Number(x);
}
console.log(numTick(1.25102, 0.00001));

→ Ссылка