IT/ASP
ASP Round, Cint, Int 함수
당양부부34
2013. 11. 20. 11:02
ASP 에서 Round 함수는 반올림 함수가 아니다.
페이징을 관련 프로그래밍을 하면서 한페이지씩 많을 때가 있어서
확인하다가 우연히 발견했다.
이해를 돕기위해 간단히 표로 보여준다
숫자 | Round | Cint | Int |
1.5 | 2 | 2 | 1 |
2.5 | 2 | 2 | 2 |
3.5 | 4 | 4 | 3 |
4.5 | 4 | 4 | 4 |
5.5 | 6 | 6 | 5 |
6.5 | 6 | 6 | 6 |
7.5 | 8 | 8 | 7 |
8.5 | 8 | 8 | 8 |
9.5 | 10 | 10 | 9 |
10.5 | 10 | 10 | 10 |
뭔가 규칙같은게 보이나?
그래 Round 이놈은 무조건 짝수로 만들고 있다. 1.6 은 2가 되고 2.6도 2가 된다.
당연한 얘기지만 0.5 보다 작을 때는 소숫점을 잘라버린다.
내가 페이징할 때 자주 쓰는 Cint 역시 Round와 동일하게 처리됐다.
그래서 소숫점을 잘라주는 Int를 사용하면 문제없이 내림처리가 가능하다.
그럼 ASP에서 반올림은 어떻게 할까? 여러가지 방법이 있겠지만,
Int(자연수+0.5)
이러면 해결된다. 간단하나?
그런데 왜 저렇게 처리될까 해서 포털에서 검색을 해봤더니 결과가 뙇!!
알다시피 Round함수는 통계함수다.
0.5이상일 때 무조건 반올림 처리하는 것보다, 홀수면 반올림 짝수면 내림처리를 하는게
통계학적으로 봤을 때 오차가 줄어든다고 한다.