В настоящее время я строю диаграмму реального времени. Данные, которые протекают через WebSockets, в основном состоят из простых пар timestamp/value и получаются в линейной диаграмме, основанной на времени. Теперь я столкнулся с проблемой и задаюсь вопросом, какой был бы самый стабильный и элегантный способ:Как рассчитать полезную верхнюю и нижнюю границы для двойного значения?
Y-масштабирование диаграммы должно быть динамическим, поэтому я должен постоянно следить за минимальными/максимальными значениями видимого данные. Эта часть проста, так как вам просто нужно получить значения min/max из массива данных и установить их как нижние и верхние пределы диаграмм.
Теперь я хотел добавить некоторые дополнения к этим предельным значениям, чтобы получить хорошие и круглые предельные значения. Например, если максимальное значение в данном диапазоне составляет, скажем, 24.7
, я хочу, чтобы верхний предел был 30
. Мне нужна функция с одним параметром, который выводит следующее верхнее «приятное» значение. Вот несколько примеров:
0.13 --> 1
97.2 --> 100
17.08 --> 20
768 --> 800
-3.4 --> 0
116843 --> 200000
0.003 --> 0.01
Есть ли математическая функция, которую я могу использовать? Мне определенно нужно что-то стабильное, но я не вижу никакого способа добиться этого, не начав подсчитывать цифры и разбирать первую цифру и т. Д., Что было бы очень уродливо.
Спасибо за вашу помощь заранее!
С уважением, Роб
PS: Я уже говорил о том, чтобы верхнее граничное значение, я также нужна функция для нижней границы, конечно, но я предполагаю, что я могу получить, что из функции для когда мы нашли решение.
Нет, нет стандартной математической функции для этого. За 116 843, что составляет 200 000 «лучше», чем 120 000? – Barmar
Ну, это вопрос вкуса! ;-) В принципе, на естественном языке, для значений выше 0, он должен всегда увеличивать значение первой цифры на единицу и устанавливать остальную часть цифр на 0. Но я хочу сделать это без беспорядка с .toString() и т. Д. – Robert
Я думаю, что числовые алгоритмы также будут беспорядочными, так как вам нужно будет использовать логарифмы base-10, чтобы найти наиболее значимую цифру, а затем вы столкнетесь с приближениями с плавающей точкой. – Barmar