Вам придется простить формулировку этого вопроса, я уверен, что есть лучший, более лаконичный способ спросить об этом, но я этого не знаю.
Скажем, у меня есть график, и все значения оси y
[0,4,5,3,2,5,6]
Максимальное значение - шесть. Поэтому я хотел бы, чтобы Y-масштаб был помечен от 0 до 10.
Учитывая следующие значения
[33,26,54,23,86,23]
Максимальное значение - 86, поэтому я хотел бы, чтобы Y-масштаб выполнялся от 0 до 90.
Теперь скажем, что у меня есть следующие значения
[98,253,87, 876,263]
Максимум составляет 876, поэтому шкала Y должна идти от 0 до 900
Теперь я создал следующую функцию, которая должна дать мне все значения max y-scale, которые мне нужны до сих пор.
function padMaxValue(value){
for(var i = 1; i < 1000000000000000000; i = i * 10){
var decimalValue = value / i;
if(value === i){
return i;
}
if(decimalValue < 1 && decimalValue > 0.09){
return i;
}
}
}
Однако, учитывая следующие значения
[99,123,82,189,45]
Моя функция установила бы макс. макс в 1000
. Но max должен быть действительно 200. Я понимаю, что мне действительно нужен умный способ увеличить значение i
вместо того, чтобы просто умножить его на 10. Мне нужно уметь увеличивать значение я на 10, все путь до 100. Затем увеличьте его на 100, вплоть до 1000. Затем увеличьте его на 1000, вплоть до 10 000 и так далее.
Я чувствую, что должен быть какой-то аккуратный и аккуратный математический способ сделать это. И я также чувствую, что число 1000000000000000000
, которое я имею в цикле for, предает моему незнанию математики.
Anyhoot, эта проблема. Любые идеи?