이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 1|회답: 0

[팁] .NET/C#은 Math.Round의 MidpointRounding을 반올림에 사용합니다

[링크 복사]
게시됨46초 전 | | | |
요구사항: 주로 반올림에 사용되며 정밀도 요구사항에 크게 민감하지 않습니다.

소수점 두 자리를 반올림하기 위해 개발자는 다음과 같은 코드를 작성했습니다,
코드는 매우 간단합니다, 개발자들실제 결과는 12.12로, 예상했던 반올림 결과인 12.13과 상충된다

이 결과의 이유는 Math.Round이 기본적으로 반올림 규칙을 사용하지 않고, 반올림을 통해 짝수를 만들기 때문입니다.

5까지 올려서 한 쌍이 됩니다

쌍을 만들기 위해 6에서 5로 반올림하는 것은 유효 숫자를 결정한 후 다음 유효 숫자가 4 이하일 경우 반올림하고, 6 이상이면 1로 올림하는 것을 의미합니다. 다음 유명 숫자가 5일 때,

  • 5 앞의 숫자가 홀수라면 5를 올려 1 앞으로 나아가세요
  • 5가 짝수 앞에 있으면 5를 건너뛰세요(0은 짝수입니다).

통계적으로, 반올림이 5보다 짝수로 반올림하는 것이 더 정확한데, 계산이 많을 때 5에서 1로 반올림할 때 더 큰 수치가 나올 수 있기 때문입니다.

예를 들어:

1.15+1.25+1.35+1.45 = 5.2

만약 소수점이 소수점 한 자리라면, 결과는 반올림 원리를 사용해 얻습니다

1.2 + 1.3 + 1.4 + 1.5 = 5.4

다섯 개의 짝수로 반올림하면 얻어진 결과는 다음과 같습니다

1.2 + 1.2 + 1.4 + 1.4 = 5.2

이는 반올림 규칙이 더 정확한 결과를 제공함을 보여줍니다.

수학 라운드

그렇다면 Math.Round을 어떻게 사용해 예상되는 반올림을 달성하나요?

실제로 C#의 Math.Round은 두 가지 메서드를 포함해 여러 오버로드 메서드를 제공합니다:
두 방법 모두 모드라는 세 번째 매개변수를 제공하는데, 이는 MidpointRounding의 열거 변수이며 두 가지 선택 가능한 값을 가지고 있습니다

  • AwayFromZero - 정리
  • ToEven - 반올림에서 반올림으로

따라서 이상적인 반올림 결과를 원한다면 다음 코드를 사용할 수 있습니다:
아래에 나타난 MidpointRounding 열거:



참조:하이퍼링크 로그인이 보입니다.




이전의:고동시성 EF 코어 쿼리를 위한 WITH (NOLOCK) 최적화
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com