У меня есть формула расстояния, использующая широту и долготу:
distance = EARTH_MILES_RADIUS
* Math.acos(Math.sin(lat1 / RADIAN_CONV)
* Math.sin(lat2 / RADIAN_CONV)
+ Math.cos(lat1 / RADIAN_CONV)
* Math.cos(lat2 / RADIAN_CONV)
* Math.cos((lng2 - lng1) / RADIAN_CONV));
lat1, lng1, lat2, lng2 - двойные примитивы. Они приходят ко мне как двойные примитивы, и я ничего не могу с этим поделать.
Проблема в том, что когда у меня пара одинаковых значений долготы или широты, формула иногда возвращает NaN. Я полагаю, что это потому, что я принимаю арккосинус числа, немного превышающего 1, тогда как на самом деле оно должно быть ровно 1. У меня, вероятно, были бы проблемы, если бы точки были также противоположными, где они могли бы быть немного меньше - 1.
Как мне лучше решить эту проблему?