要求如下:
应用区域坐标经纬度
a) 存库均按照微度,小数点后移7位,不足补0
b) 示例:
i. 前端输入 123.1234560 后端存储 1231234560
ii. 前端输入 123.1230 后端存储 1231230000
iii. 前端输入 12 后端存储 120000000
iv. 后端取库 1231234560传输给前端展示为123.1234560
v. 后端取库 1231230000传输给前端展示为123.1230000
vi. 后端取库 120000000传输给前端展示为12.0000000
实现:
package com.xdja.pki.itsca.core.region;
import org.apache.commons.lang3.StringUtils;
/**
* 区域坐标处理
*
* @author wly
*/
public class PointHandle {
/**
* 存库 补够7位 去小数点
* @param point
* @return
*/
public static String toPoint(String point) {
int i = StringUtils.indexOf(point, ".");
if (i == -1) {
//没有小数点
i = point.length() - 1;
}
int length = 8 - point.length() + i;
String s = null;
if (length > 0) {
s = point + String.format("%1$0" + (length) + "d", 0);
point = s.replace(".", "");
} else {
//length=0 已够7位
point = point.replace(".", "");
}
return point;
}
/**
* 展示 加小数点
* @param point
* @return
*/
public static String pointTo(String point) {
int length = point.length() - 7;
String decimal = point.substring(length);
String integer = point.substring(0, length);
point = integer + "." + decimal;
return point;
}
//测试
public static void main(String[] args) {
String a = "11";
String b = "11.1234";
String c = "11.1234567";
a = toPoint(a);
b = toPoint(b);
c = toPoint(c);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("------------");
a = pointTo(a);
b = pointTo(b);
c = pointTo(c);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
控制台输出:
整整齐齐 ok ! ! !