繁体   English   中英

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

[英]How to round to nearest integer given a tolerance

假设我的公差为0.01(表示任何低于此值的值都应四舍五入)

我有一个数字1.009,该数字应四舍五入为1.0,因为它小于公差,但应保留数字1.01,同样应保留0.99,但将0.91舍入为1.00。

我希望此逻辑适用于所有整数,如果不可能,则使用数字数组。

这是我尝试仅针对整数1.00进行的操作

https://jsbin.com/yuyozopeno/1/edit?js,控制台,输出

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))

这种数学运算还有更好的名称吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM