jstl에서 연산을 할 때(특히 나눗셈) 소수점이 제대로 안찍히고 자동으로 반올림이 되는 경우가 있다.


아무리 핸들링 하려고 해도 안됐지만 결국 해결


해결방법은 받아온 Data를 바로 쓰지 않고 포맷을 바꾼상태에서 사용해야 한다.


ex) result.SUM_ANSWER1이 70, result.SUM_ANSWER2가 1일 때

구성비율은

result.SUM_ANSWER1/(result.SUM_ANSWER1 + result.SUM_ANSWER2) 와

result.SUM_ANSWER2/(result.SUM_ANSWER1 + result.SUM_ANSWER2)

이다.


이것을 jstl로 표현하면

<c:set var="a" value="${result.SUM_ANSWER1/(result.SUM_ANSWER1 + result.SUM_ANSWER2)}"/>

<c:set var="b" value="${result.SUM_ANSWER2/(result.SUM_ANSWER1 + result.SUM_ANSWER2)}"/>

인데 결과는

a = 100, b=0 이 나온다.


해결방법은

<fmt:formatNumber var="sumAnswer1" value="${result.SUM_ANSWER1}" pattern="#.##"/>

<fmt:formatNumber var="sumAnswer2" value="${result.SUM_ANSWER2}" pattern="#.##"/>


<c:choose>

<c:when test="${sumAnswer1> 0}">

<fmt:formatNumber var="calAnswer1" value="${sumAnswer1/(sumAnswer1+sumAnswer2)}"/>


</c:when>

</c:choose>


받아 온 값이 int 형이면 연산을 해도 int 이기 때문에

포맷을 소수점있게 바꾼다음 연산해야 소수점연산이 제대로 된다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1554)
Life With Gopro (7)
Life With Mini (66)
Diary (903)
너 그거 아니(do you know) (104)
난 그래 (104)
속지말자 (9)
Project (34)
Poem (12)
Song (0)
Study (119)
Photo (112)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 받은 트랙백

Total : 423,639
Today : 180 Yesterday : 214