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

我正在寻找一种方法来向上和向下到达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; } 

目标是这样的:最大值(向上舍入到最接近的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 ,请将y替换为500:

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