Округление до кратного значения

Помогите пожалуйста написать такой скрипт, я уже все перепробовал.

Пробовал Math.round, toFixed, они не совсем то что нужно делают.

Есть такие массивы:

var arr = [2000, 1537, 5491, 3425, 4112];
var arr2 = [5, 8, 11, 3, 13];
var arr3 = [0.009, 0.01, 0.003, 0.014];

нужно из этого сделать такое (во внутри может быть 2 или 3 кратные числа, возможно 4-5):

var arr = [1500, 2000, 3000, 4000, 5500];
var arr2 = [0, 5, 10, 15];
var arr3 = [0, 0.005, 0.01, 0.015];

варианты разные, от 0.000001 до 10000000, и какие именно числа будут предугадать невозможно

Вообщем нужно найти минимально значение, и округлить в меньшую сторону до кратного, и найти максимально значение и округлить в большую сторону до кратного числа.

Пока получилось только получить минимально и максимальное значение:

var arr = [2000, 1537, 5491, 3425, 4112];
var minValue = 0;
var maxValue = 0;
for(var ar in arr){
	if(!minValue) minValue = arr[ar];
	minValue = arr[ar] < minValue ? arr[ar] : minValue;
	maxValue = arr[ar] > maxValue ? arr[ar] : maxValue;
}
console.log(minValue);
console.log(maxValue);

PS. В исходном массиве важны только минимальное и максимальное значение, другие значения не имеют значения.


Ответы (1 шт):

Автор решения: Igor

А-а-а, я догадался. Кто же так объясняет!

Вам нужен алгоритм расчета меток шкалы для диапазона значений.

Искать можно по "nice label algorithm".

https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks

→ Ссылка