Я создаю линейку с переменным разрешением для программы визуализации данных.Я хочу, чтобы он отображал метки тиков осей в зависимости от уровня масштабирования.
Например, при очень широком зуме он будет отображать только метки [100, 200, 300].Затем, если я закрою масштабирование, на нем появятся, скажем, метки [10, 15, 20, 25].
Числа всегда будут кратны 5 или 10. Таким образом, частичная "сетка округления" будет[1, 5, 10, 50, 100, 500, 1000, 5000], но это будет расти бесконечно для обеих сторон (включая десятичные числа.
) Вопрос в том, как задано произвольное положительное число с плавающей запятой, какМогу ли я «принизить» его к первому меньшему числу в сетке?
(Это позволило бы мне установить гранулярность меток тиков в соответствии с уровнем масштабирования плоттера).
Имейте в виду:
- Сетка "бесконечна" (поэтому я не использовал сортировку и другие методы списка);
Не существует фиксированного набора значений длячисло с плавающей запятой, за исключением того, что оно всегда положительное и ненулевое.
(РЕДАКТИРОВАТЬ) Разрешение НЕ СИММЕТРИЧНО, тиковые интервалы, скажем, [1,5,10,50,100,500, ...], множители приращения поочередно 2 и 5!
Спасибо за повторADING