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 이기 때문에

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

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

카테고리

nobang이야기 (1933)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (162)
난 그래 (159)
Study (290)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :