Javascript:向上和向下舍入到最接近的5,然后找到一个共同点

Far*_*gho 18 javascript jquery rounding

我正在寻找一种方法来向上和向下到达nearerst 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;
}
Run Code Online (Sandbox Code Playgroud)

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

1379.8 -> 1500
Run Code Online (Sandbox Code Playgroud)

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

41.8 -> 0
Run Code Online (Sandbox Code Playgroud)

然后我想找到一个像250或500这样的共同点

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

要么:

0 -> 500 -> 1000 -> 1500
Run Code Online (Sandbox Code Playgroud)

是一种做某事的方法吗?非常感谢

Bla*_*ger 52

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

x_rounded = 500 * Math.round(x/500);
Run Code Online (Sandbox Code Playgroud)

要将其舍入到最接近的y,请用y替换500 :

x_rounded = 250 * Math.round(x/250);
Run Code Online (Sandbox Code Playgroud)

  • 那么你需要更具体地告诉我们你想如何围绕数字.目前,您的问题实际上并没有说明您的意思. (2认同)

T I*_*T I 5

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

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;
}
Run Code Online (Sandbox Code Playgroud)

演示