From 281dc31c4a4d4e2cf266dd65a470c7d29e4e7332 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Wed, 20 Apr 2022 08:24:18 +0800 Subject: [PATCH] fix:修复距离计算精度损失问题 --- zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java b/zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java index a741b00..c9b423e 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java +++ b/zq-erp/src/main/java/com/matrix/system/common/tools/LocationUtil.java @@ -1,5 +1,7 @@ package com.matrix.system.common.tools; +import java.math.BigDecimal; + public class LocationUtil { private static final double EARTH_RADIUS = 6378.137; @@ -17,7 +19,7 @@ * shopX 店铺位置经度 * shopY 店铺位置纬度 */ - public static double getDistance(double locX, double locY, double shopX, double shopY) { + public static BigDecimal getDistance(double locX, double locY, double shopX, double shopY) { double a, b, d, sa2, sb2; locY = rad(locY); shopY = rad(shopY); @@ -29,12 +31,13 @@ d = 2 * EARTH_RADIUS * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(locY) * Math.cos(shopY) * sb2 * sb2)); - return d; + return BigDecimal.valueOf(d); } public static void main(String[] args) { // 112.886891,28.222562,114.061937,22.626003 -- 634093.3209722887 // 113.930692,22.939454 -- 597367.3546527711 - System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); +// System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); + System.out.println(BigDecimal.ONE.compareTo(BigDecimal.ZERO)>0); } } -- Gitblit v1.9.1