虽然看过多遍,但只有自己亲自踩过坑才记忆深刻
毕设代码计算地球两点间距离,经纬度计算距离,
在
return Math.sqrt(latDistance*latDistance + longDistance*longDistance);两个int相乘溢出了
private static int HOUR_DISTANCE = 111000; private static int MIN_DISTANCE = 1850; private static int SEC_DISTANCE = 30; //计算两个点的距离 public static double getDistance(double lat1, double lng1, double lat2, double lng2) { int hour, min, sec; int hour2, min2, sec2; int latDistance, longDistance; hour = (int)(lat1); min = (int)((lat1-hour)*60); sec = (int)(((lat1-hour)*60 - min)*60); hour2 = (int)(lat2); min2 = (int)((lat2-hour2)*60); sec2 = (int)(((lat2-hour2)*60 - min2)*60); latDistance = Math.abs(hour-hour2) * HOUR_DISTANCE + Math.abs(min-min2) * MIN_DISTANCE + Math.abs(sec-sec2) * SEC_DISTANCE; hour = (int)(lng1); min = (int)((lng1-hour)*60); sec = (int)(((lng1-hour)*60 - min)*60); hour2 = (int)(lng2); min2 = (int)((lng2-hour2)*60); sec2 = (int)(((lng2-hour2)*60 - min2)*60); longDistance = Math.abs(hour-hour2) * HOUR_DISTANCE + Math.abs(min-min2) * MIN_DISTANCE + Math.abs(sec-sec2) * SEC_DISTANCE; return Math.sqrt(latDistance*latDistance + longDistance*longDistance); }