지도 API를 활용해 키워드 검색 후, 가게 정보를 가져올 수 있었다.
사진에는 보이지 않지만 input hidden으로 선택한 업체의 x 좌표와 y 좌표를 가져온다.
문제는 x좌표와 y좌표를 소수점 뒤 10자리수 까지 가져온다는 것이다.
ex)
37.13254642344 , 127.2132132143
DB에 넣기에는 자릿수가 너무 길어져서 부담이 되어, 뒤의 소수점자리를 자르고 싶었다.
좌표에서 소수점뒤의 6자리수 이상부터는 실제로 10cm정도의 차이정도만 있다고 하니,
소수점 뒤에 6자리까지만 잘라주면 되겠다.
Java
1. Math.round()
double num = 123.4567891011;
double test = Math.round(num);
double result1 = Math.round(num * 100) / 100.0;
System.out.println(result1);
Java의 Math.round() 함수는 실수의 소숫점 첫번째자리를 반올림해서 정수로 나타내주는 반올림함수이다.
123.456~ 에 100을 곱하면, 12345.678~
소수점 첫번째 자리에서 반올림을하면 12346 이 되겠다.
이걸 다시 100으로 나눠주면 123.46 으로 출력된다.
이렇게 원하는 소숫점을 반올림해서 나타낼 수 있겠다.
2. String.format()
double num = 123.4567891011;
String result = String.format("%.2f", num);
다음은 String에서 제공하는 format 메서드를 이용한다.
따로 설명이 필요없을 정도로 매우 간단하다.
단! double형으로 받은 좌표가 String으로 변환되기 때문에, DB의 컬럼에 신경쓸 필요가 있다.
난 varchar와 같은 문자형이 아닌 NUMBER 타입으로 좌표 컬럼을 만들었기 때문에 해당 방법은 사용하지 않았다.
3.DecimalFormat
double num = 123.4567891011;
DecimalFormat df = new DecimalFormat("0.00");
String result = df.format(num);
DeciamlFormat 함수는 #.## 의 형태로 숫자형 포맷을 출력할 수 있도록 해주는 클래스이다.
매우 편하지만, 마찬가지로 String으로 출력되기 때문에 사용하진 않았다.
형 변환을 해주면 되긴 하겠지만.. 다른 방법이 있는데 굳이 돌아갈 필요는 없겠다.
나는 double형으로 좌표를 받아서, DB에 넣을 목적이 였기 때문에 DB에 잘라진 소숫점만 들어가면 되는 상황이였다.
ajax를 이용해 좌표데이터를 주고 받았는데,
먼저 js를 이용해 프론트단에서 잘라서 데이터를 보낼 수도 있을 것이고,
java를 이용해 백단에서 데이터를 DB로 옮길 수도 있었다.
하지만 이번엔 DB에서 처리를 해서 데이터를 저장했다.
오라클을 기준으로 실수도 저장이 가능한 NUMBER타입 컬럼에 (10, 6)의 값을 줘서 소숫점을 나눠주었다.
최대 10자리 자릿수까지 표시하고, 소숫점아래는 최대 6자리까지 표시하겠다는 것이다.
만약 123456789.123456789 라는 소숫점이 있다면 123456789.1
1234567.1234567 이 있다면 1234567.123 이렇게 표시되겠다.
이것은 고정 소수점 방식인데,
이 외에도 DB에는 부동 소수점 방식으로 좌표를 통째로 집어넣고,
필요에 따라 select문에서
- ROUND 함수 소수점 둘째자리 반올림
select ROUND( [소수값], 2) from dual;
- TRUNC함수 소수점 둘째자리 이후로 버림
select TRUNC( [소숫값] , 2) from dual;
이렇게 select 결과값에서 나눠주는 방법도 있겠고,
TO_CHAR() 로 DATE 값을 원하는 포맷으로 나타내듯이 소숫값의 자리수를 잘라줄 수도 있겠다.
프론트, 백 , DB 필요에 따라 상황에 따라 최적의 방법을 찾아내보자.
'SPRING BOOT > WhiteRecord' 카테고리의 다른 글
HttpURLConnection을 이용한 API 데이터 받아오기 (0) | 2022.02.07 |
---|---|
[스프링부트] 에디터 이미지업로드 시 임시폴더로 분리하기 (0) | 2022.02.05 |
스프링부트 Scheduler (4) | 2022.01.28 |
CK에디터로 올린 이미지에서 썸네일 뽑아내기 ( 정규식 ) (1) | 2022.01.28 |
WhiteRecord 프로젝트 시작 (0) | 2022.01.10 |