Привет!
Подскажите плиз, как можно лучше реализовать такой функционал (или может есть функция для такого)?
Если значение - угол поворота в градусах. Обычно оно float, например, 90.3222341. Мне нужно детектить такие значения, как 0, 45, 90, 135, 180, 225, 270, 315, 360. То есть xy и диагонали.
Например:
90.3222341 => 90
136.99 => 135
358 => 360
46 => 45
Сделал так:
const angleBase = parseInt(value / 10) * 10; // (90.3222341 => 90, 0.2222 => 0);
if(angleBase % 45 === 0) { ... }
, но 45, 135, 225, 315 первая строка превращает в 40, 130, 220, 310, теряем по 5 градусов.
Пробовал делать просто .toFixed(0), но тогда могут получаться значения 1, 91, 182, а не 0, 90, 180
На ум приходит большая конструкция из if else а-ля if(value > -1 && value < 1) и т.д., что кажется немного костылем.
Может есть какое-нибудь решение попроще?