728x90

Math.Round는 반올림 함수이다.

반올림 하려는 자릿수가 5인 경우 보통 올림이 된다고 생각하는데 Math.Round는 그렇지 않다.

예) Math.Round(3.125, 2) --> 예상값 : 3.13 이라고 생각하지만 실제 결과값 : 
3.12
예) Math.Round(3.135, 2) --> 예상값 : 3.14, 결과값 : 3.14

그 이유인즉, Round 함수는 통계학 함수이다.

Round 함수는 반올림되는 수 바로 앞의 값이 짝수인 경우 버림이 되고, 반올림 되는 자릿 수의 값이 홀수인 경우 올림이 된다.

이렇게 함으로써 확률적으로 실제 평균값에 가깝도록 만드는 것이다.

이런 방식을 금융권에서도 쓰고 있다. 이러한 방식을 Banker's Rounding 방식이라고 한다.

닷넷의 Round 함수를 이용할때 MidpointRounding.AwayFromZero 파라미터의 여부에 따라 다른 값을 가질 수 있다.

* Math.Round(3.125, 2, MidpointRounding.AwayFromZero) --> 결과값 : 3.13
* Banker's Rounding 방식 : Math.Round(3.125, 2) --> 결과값 : 3.12

728x90

'개발및업무 > C#' 카테고리의 다른 글

dll 파일 생성 방법  (0) 2010.12.11
Windows Presentation Foundation 소개  (0) 2010.12.11
클래스와 멤버변수  (0) 2010.12.03
자바스크립트 substring 과 substr의 차이  (0) 2010.09.24
.NET Compiler  (0) 2010.08.10

+ Recent posts