Javascript:向上和向下舍入到最接近的 5,然后找到一个公分母

Javascript: Round up and down to the nearest 5, then find a common denominator

本文关键字:一个 然后 舍入 Javascript 最接近      更新时间:2023-09-26

我正在寻找一种方法来向上和向下舍入到最接近的 5,然后找到两个数字的一个很好的公分母。我需要它来为图表上的 y 形 skale 的标题。

这是我到目前为止的代码:

function toN5( x ) {
    var i = 1;
    while( x >= 100 ) {
        x/=10; 
        i*=10;
    }
    var remainder = x % 5;
    var distance_to_5 = (5 - remainder) % 5;
    return (x + distance_to_5) * i;
}

目标是这样的:最大值(四舍五入到最接近的 5)

1379.8 -> 1500

反之亦然 - 最小值(四舍五入到最接近的 5)

41.8 -> 0

然后我想找到一个像 250 或 500 这样的公分母

0 -> 250 -> 500 -> 750 -> 1000 -> 1250 -> 1500

或:

0 -> 500 -> 1000 -> 1500

有没有办法做这样的事情?非常感谢

如果你想将x四舍五入到最接近的500,你可以把它除以500,四舍五入到最接近的整数,然后再次乘以500:

x_rounded = 500 * Math.round(x/500);

要将其四舍五入到最接近的 y,请将 500 替换为 y

x_rounded = 250 * Math.round(x/250);

希望我的数学是正确的,但这里有各种"四舍五入"的方法

function sigfig(n, sf) {
    sf = sf - Math.floor(Math.log(n) / Math.LN10) - 1;
    sf = Math.pow(10, sf);
    n = Math.round(n * sf);
    n = n / sf;
    return n;
}
function precision(n, dp) {
    dp = Math.pow(10, dp);
    n = n * dp;
    n = Math.round(n);
    n = n / dp;
    return n;
}
function nearest(n, v) {
    n = n / v;
    n = Math.round(n) * v;
    return n;
}

演示

使用此 api,您可以使用以下命令将任何数字四舍五入为任何数字的最接近的倍数,向上或向下:

$scm.round(number to be rounded).toNearest(multiple to which you want to round);

例如,如果要将 536 舍入到最接近的 500,则可以使用:

$scm.round(536).toNearest(500);

相关文章: