Javascript: округлить вверх и вниз до ближайшего 5, затем найти общий знаменатель - программирование
Подтвердить что ты не робот

Javascript: округлить вверх и вниз до ближайшего 5, затем найти общий знаменатель

iam ищет способ округления вверх и вниз до ближайшего 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

Есть ли способ сделать что-то подобное? Большое спасибо

4b9b3361

Ответ 1

Если вы хотите округлить x до ближайшего 500, вы можете разделить его на 500, округлить его до ближайшего целого числа, а затем снова умножить на 500:

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

Чтобы округлить его до ближайшего y, замените 500 на y:

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

Ответ 2

Надеюсь, мои математики верны, но здесь есть различные способы "округления"

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

демо

Ответ 3

Используя этот api, вы можете округлить любое число до ближайшего кратного числа, вверх или вниз, с помощью этой команды:

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

Например, если вы хотите округлить 536 до ближайшего 500, вы должны использовать:

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