给定公差如何四舍五入到最接近的整数

时间:2018-12-16 01:36:14

标签: javascript math rounding

假设我的公差为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 :(得分:2)

这应该为您做。您只是错过了找到最接近的整数的一般情况,幸运的是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))