Как округлить до ближайшего целого с учетом допуска - PullRequest
0 голосов
/ 16 декабря 2018

Предположим, у меня допуск 0,01 (что означает, что все, что ниже этого значения, должно быть округлено)

У меня есть число 1,009, которое должно быть округлено до 1,0, потому что оно меньше, чем допуск, но число 1,01 должно остаться, также0,99 должно остаться, но 0,91 должно округляться до 1,00

Я хочу, чтобы эта логика применялась ко всем целым числам, если это невозможно, тогда массив чисел.

Вот моя попытка сделать это только дляцелое число 1,00

https://jsbin.com/yuyozopeno/1/edit?js,console,output

function tolerate(num, acceptableTolerance) {
    var difference = Math.abs(1.00 - num);
    if (difference <= acceptableTolerance) {
        num = 1.00;
    }

    return num;
}

console.log(tolerate(1.01, 0.01))
console.log(tolerate(1.001, 0.01))
console.log(tolerate(0.99, 0.01))
console.log(tolerate(0.9991, 0.01))

Также есть ли лучшее название для этого типа математической операции?

1 Ответ

0 голосов
/ 16 декабря 2018

Это должно сделать это для вас.Вы просто пропустили общий случай поиска ближайшего целого числа, и, к счастью, в javascript есть хорошая функция, которая сделает это за вас: Math.round

function tolerate(num, acceptableTolerance) {
    var nearestRoundNumber = Math.round(num);
    var difference = Math.abs(nearestRoundNumber - num);
    if (difference <= acceptableTolerance) {
        num = nearestRoundNumber;
    }

    return num;
}

console.log(tolerate(1.01, 0.01))
console.log(tolerate(1.001, 0.01))
console.log(tolerate(0.99, 0.01))
console.log(tolerate(0.9991, 0.01))
...