Tôi cần chọn phạm vi từ 0 đến 359,9 độ trong cơ sở dữ liệu SQL.Cách tốt nhất để xử lý phạm vi 360 độ
Vị trí đặt của tôi ở dạng góc trung tâm và một dải. Ví dụ: center = 100 range = 50 sẽ cho tôi phạm vi góc> 75 góc < 125. Tuy nhiên nếu center = 0, thì phạm vi sẽ là góc < 25 và góc> 335.
Như vậy thuật toán hiện tại của tôi làm việc như thế này:
minangle = center-range/2
maxangle = center+range/2
if minangle<0, then minangle += 360
if maxangle>0, then maxangle -=360
Sau đó, trong truy vấn của tôi
if minangle<maxangle, I query angle>minangle AND angle<maxangle
if minangle>maxangle, I query angle>minangle OR angle<maxangle
Cách tiếp cận này có vẻ là một chút phức tạp. Có cách tiếp cận tốt hơn không?
sử dụng phép toán modulo. '(góc + dải)% 360'. phần còn lại sẽ là góc 0-> 360 thích hợp. –
http://stackoverflow.com/questions/9138790/cant-use-modulus-on-doubles. Đối với phao và tăng gấp đôi sử dụng fmod. –
Điều đó giúp với logic +360 -360. Tôi đã thực sự hy vọng có một số cách để tránh (minangle> maxangle) và thay đổi từ và sang hoặc logic – eng3