หากภาษาการเขียนโปรแกรมที่คุณใช้รองรับตัวดำเนินการ% (mod) กับหมายเลขทศนิยม (เช่น Python และ Ruby) ฉันขอแนะนำให้ใช้ มิฉะนั้นบางภาษาอื่น ๆ (เช่น C และ C ++) อนุญาตให้คุณใช้ fmod ()
(ไม่ว่าคุณจะใช้โอเปอเรเตอร์ mod ตัวใดโปรดตรวจสอบให้แน่ใจก่อนว่ามันจะทำการ mod กับตัวเลขทศนิยมและมันจะให้คำตอบแบบไม่ลบเสมอมิฉะนั้นคุณจะได้รับความประหลาดใจที่น่ารังเกียจในภายหลังเมื่อหลายคน คะแนน lat / lon ไม่ถูกต้อง)
ใช้มันแบบนี้:
# Put the longitude in the range of [0,360):
longitude %= 360
# Put the longitude in the range of [-180,180):
if longitude >= 180:
longitude -= 360
หากคุณต้องการที่จะทำทั้งหมดในบรรทัดเดียว:
# Put the longitude in the range of [-180,180):
longitude = (longitude + 180) % 360 - 180
วิธีการเหล่านี้ไม่มีลูปดังนั้นพวกเขาจะทำให้มาตรฐานค่าลองจิจูดโดยไม่จำเป็นต้องเพิ่มหรือลบซ้ำ ๆ ไม่ว่ากี่ครั้งที่การสังเกตของคุณวนรอบโลก
แก้ไข:
อืม ... ฉันเพิ่งสังเกตเห็นว่า Javascript ดูเหมือนจะไม่จัดการ%
กับค่าลบเช่นฉันคิดว่ามันจะ
ในกรณีดังกล่าวลองใช้สายการบินเดียว:
longitude = (longitude + 36180) % 360 - 180
ที่36180
เราเพิ่มคือ 36,000 + 180 36,000 คือการย้ายค่าลบไปยังโดเมนบวกและ 180 คือการเลื่อนไปเพื่อที่เมื่อมัน modded โดย360
มันจะอยู่ในช่วง [0,360) . ชิ้น- 180
ส่วนเลื่อนกลับไปเป็นช่วง [-180,180)
นี่คืออีกหนึ่งสายการบินหนึ่งที่ไม่พึ่งพา 36,000 เป็นใหญ่พอ:
longitude = (longitude % 360 + 360 + 180) % 360 - 180
longitude % 360 + 360
ส่วนหนึ่งจะให้แน่ใจว่าการเข้าพักค่าในโดเมนบวกเมื่อมัน modded 360
ในภายหลังโดย ชิ้น+ 180
ส่วนเลื่อนไปมาเพื่อที่ว่าเมื่อได้รับการหักลบออก 180 ครั้ง (ด้วย- 180
) มันจะอยู่ในช่วงที่ต้องการของ [-180,180]