Вопрос по jquery, javascript – Javascript: округлите до 5 до ближайшего, затем найдите общий знаменатель

18

Я ищу способ округлить до И до ближайшего 5, а затем найти большой общий знаменатель двух чисел. Мне это нужно для подписи y-шкалы на графике.

Это мой код до сих пор:

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

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

Что именно вы подразумеваете под округлением до ближайшей 5? В первом и втором примерах вы фактически округляете до ближайших 500. Или до ближайших 250, в зависимости от того, как вы на это смотрите. Blazemonger
1379,8, округленное до ближайшего 5, будет 1380. Вы имеете в виду "до ближайшего 500"? devnull69

Ваш Ответ

3   ответа
1

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

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

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

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

К сожалению, я только что понял, вопрос был задан 5 лет назад. Может ли админ закрыть это? Кажется, что нет никакой активности ...
50

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

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

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

x_rounded = 250 * Math.round(x/250);
Спасибо за ответ. Слишком плохие вопросы, подобные этому, закрываются. Это явно помогает людям.
Очень хороший ответ. Если бы я хотел приблизиться к 0.05 или 0.1, мне просто нужно сделать 0.05 * Math.round (x / 0.05)
Звучит здорово, но проблема в том, что значения могут быть огромными и очень маленькими. Для примера 1500 и 0,23. Fargho
Тогда вы должны быть более конкретными для нас о том, как вы хотите округлить число. В настоящее время ваш вопрос фактически не говорит о том, что вы, очевидно, имеете в виду.
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;
}

демонстрация

Похожие вопросы