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
Есть ли способ сделать что-то подобное? Большое спасибо
Ответы
Ответ 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);