반응형
이번 상황은 이렇다.
이번 데이터는 한 묶음으로 버전 관리가 이뤄지는 데이터다.
네가지 데이터가 서로 관계를 가지고 한 묶음으로 버전 관리가 이뤄진다.
이전 버전과 현재 버전 간에 변화 수치를 확인하는 화면이 존재한다.
기본 절차
- 데이터를 비교 기준에 따라 그룹핑 한다.
- 상호 데이터 간에 비교를 진행한다. 추가된 경우, 변경된 경우, 취소된 경우가 존재한다.
- 추가된 경우 - 현재 데이터에는 존재하는데 이전 데이터에 존재하지 않는 그룹의 경우
- 취소된 경우 - 이전 데이터에는 존재하는데 현재 데이터에 존재하지 않는 그룹의 경우
- 변경된 경우 - 현재 데이터와 이전 데이터에 모두 존재하지만 수치가 변경된 경우
이때 문제는 변경된 경우에 비교 수치가 실수값이라는 점이다.
분명 동일한 데이터를 DB에 저장하고
DB 프로시저를 통해 변경이력 테이블로 INSERT-SELECT를 했을 뿐인데
데이터가 18.00000000001 과 18.0 이런식으로 불러와졌다.
항상 그러는것도 아니고 데이터 하나만 딱 그랬다.
어떤 단게에서 오차가 발생했는진 모르지만 이 데이터는 소수점 셋째자리까지 정확도를 유지하므로
비교할 때 Math.Round(수치 * 1000.0)/1000.0 으로 소수점 떼는 로직을 추가했다.
coding-factory.tistory.com/250
반응형
'백엔드 > 데이터베이스' 카테고리의 다른 글
실수로 지운 데이터 복구하기 (0) | 2021.11.25 |
---|---|
[Tibero] 티베로 스튜디오 데이터 변경 시 날짜 데이터 입력 안되는 문제 (0) | 2021.03.28 |
[TIBERO] JDBC-90401:Connection refused by server (0) | 2021.01.12 |
타입 (0) | 2020.12.05 |
IBatis Inline Parameter (0) | 2019.05.10 |
댓글