2012-09-19 3 views
1

MVC3 C# .Net 웹 응용 프로그램이 있습니다. 계산 결과는 158 * 1.75 = 276.5입니다. 나는이 숫자를 최대 277까지 내고 싶다. 나는 Math.Round를 사용하고 있지만 반올림한다. 나는 어딘가에서이 문제를 보았다. 해결책은 무엇입니까?C#에서 반올림. NET

+1

이 질문을 참조하십시오 : http://stackoverflow.com/questions/977796/in-c-math-round2-5- 결과는 --- 3 대신에 농담입니까? –

답변

6

사용하십시오 MidpointRounding

Math.Round(276.5, MidpointRounding.AwayFromZero); 

데모 걸리는 overload : http://ideone.com/sQ26z

+0

+1이어야 보상 할 수 있습니다. – NominSim

+0

형식 문자열을 사용하여 숫자를 십진수가 0 인 문자열 표현으로 변환하면 'string output = (276.5) .ToString ("F0");'이고, 제로 규칙도 사용됩니다. 나는 숫자를 문자열 형식으로 지정할 때 to-even 규칙이 사용 된 적이 없다고 생각합니다. –

+0

+1 ... 또한 dup는 모든 사례를 자세히 다룹니다. –

-1

Math.Ceiling를 사용해보십시오 대신

+1

OP (나는 추측합니다)는 276.1을 276이 아닌 277로 반올림하고자합니다. – NominSim

+0

물론 : – Johnny

+0

@NominSim ... 276.1은 276이어야하고 276.5는 277 – MikeTWebb

0

사용 :

Math.Round(value, MidpointRounding.AwayFromZero); 
2

.NET은 은행 '반올림을 사용합니다 기본적으로; 5로 끝나는 값을 가장 가까운 유효 자릿수로 반올림하고 항상 올리는 것은 아닙니다 ("의미 산술 올림"이라고 함). 그 이유는 무작위로 10 진수를 뭉치고 합쳐서 뱅커의 라운딩을 사용할 때 산술적으로 반올림 된 숫자의 합보다 합계가 더 가까운 숫자가 더 가까워지기 때문입니다.

이미 언급했듯이
Math.Round(myNumber, MidpointRounding.AwayFromZero); 
4

, 당신은 Math.Round(d, MidpointRounding.AwayFromZero)를 사용할 수 있습니다

는 MidpointROunding 열거 값을 받아들이는 과부하를 사용, 학년 학교 반올림 규칙을 사용하도록 강제합니다.

기본적으로

는 .NET은 소위를 사용 bankers rounding (또는 MidpointRounding.ToEven)