Devo selezionare un intervallo da 0 a 359,9 gradi in un database SQL.Il modo migliore per gestire l'intervallo di 360 gradi
Il mio in put è in forma di un angolo centro e un intervallo. Ad esempio center = 100 range = 50 mi darebbe un intervallo di angolo> 75 angolo < 125. Tuttavia se center = 0, allora l'intervallo sarebbe l'angolo < 25 e l'angolo> 335.
Così il mio algoritmo attuale funziona così:
minangle = center-range/2
maxangle = center+range/2
if minangle<0, then minangle += 360
if maxangle>0, then maxangle -=360
Poi nella mia domanda
if minangle<maxangle, I query angle>minangle AND angle<maxangle
if minangle>maxangle, I query angle>minangle OR angle<maxangle
Questo approccio sembra essere un po 'contorto. C'è un approccio migliore?
utilizzare modulo matematica. '(angolo + intervallo)% 360'. il resto sarà l'angolo 0-> 360 corretto. –
http://stackoverflow.com/questions/9138790/cant-use-modulus-on-doubles. Per i galleggianti e i doppi usare fmod. –
Questo aiuta con la logica +360 -360. Speravo davvero di avere un modo per evitare il (minangle> maxangle) e il passaggio da e verso o la logica – eng3