Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:上下取整到最接近的5,然后找到一个公分母_Javascript_Jquery_Rounding - Fatal编程技术网

Javascript:上下取整到最接近的5,然后找到一个公分母

Javascript:上下取整到最接近的5,然后找到一个公分母,javascript,jquery,rounding,Javascript,Jquery,Rounding,我在寻找一种方法,上下取整到最接近的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; retu

我在寻找一种方法,上下取整到最接近的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)

另一种方法是四舍五入-最小值(四舍五入到最接近的5)

然后我想找到一个公约数,比如250或500

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

或:

有办法做那样的事吗?非常感谢

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

x_rounded = 500 * Math.round(x/500);
若要将其四舍五入到最接近的y,请将500替换为y:


希望我的数学是正确的,但这里有各种“取整”的方法

使用以下命令,您可以将任意数字向上或向下舍入到任意数字的最接近倍数:

$scm.round(要舍入的数字).toNearest(要舍入的倍数)

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


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

1379.8四舍五入到最接近的5将是1380。你是说“精确到500”吗?你说的“精确到5”是什么意思?在第一个和第二个示例中,实际上是四舍五入到最接近的500。或者精确到250,这取决于你如何看待它。听起来不错,但问题是,这些值可能很大,也可能很小。例如1500和0.23。那么您需要更具体地告诉我们您希望如何对数字进行四舍五入。目前,你的问题实际上并没有说出你的意思。回答得很好。如果我想精确到0.05或0.1,我只需要做0.05*的数学运算。四舍五入(x/0.05)谢谢你的回答。像这样的问题太糟糕了,闭嘴吧。这显然是在帮助人们。哦,我才意识到这个问题是5年前提出来的。管理员可以关闭它吗?似乎没有任何活动。。。
41.8 -> 0
0 -> 500 -> 1000 -> 1500
x_rounded = 500 * Math.round(x/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;
}