값을 가장 가까운 정수로 반올림하려면 어떻게해야합니까?
예를 들면 :
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()"은 나를 돕지 않습니다. 어떤 아이디어?
값을 가장 가까운 정수로 반올림하려면 어떻게해야합니까?
예를 들면 :
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()"은 나를 돕지 않습니다. 어떤 아이디어?
답변:
자세한 내용은 공식 문서 를 참조하십시오 . 예를 들면 :
기본적으로 Math.Round
메서드에 세 개의 매개 변수 를 제공합니다 .
샘플 코드 :
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
당신은 필요 MidpointRounding.AwayFromZero
당신은 0.5 값을 반올림하려면. 불행히도 이것은의 기본 동작이 아닙니다 Math.Round()
. 사용하는 경우 MidpointRounding.ToEven
(기본값) 값이 가장 가까운 반올림됩니다 도 수 ( 1.5
로 반올림됩니다 2
,하지만 2.5
또한 반올림됩니다 2
).
away from zero
도하는 뜻 -1.5
라운드 것이다 -2
.
당신은 필요 Math.Round
하지 않습니다 Math.Ceiling
. Ceiling
항상 "올림" Round
하고 소수점 뒤의 값에 따라 올림 또는 내림합니다.
이 설명서가 있고 약간 귀여운 방법도 있습니다.
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
숫자에 0.5를 더하고 int (또는 floor it)로 캐스팅하면 수학적으로 올바르게 반올림됩니다.
원하는 것을 정확하게 수행하는 Math.Round 함수가 있습니다.
Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.
1.5
값으로? 더 많은 매개 변수가 필요합니다.
이것은 가장 가까운 5로 반올림되거나 이미 5로 나눌 수있는 경우 변경되지 않습니다.
public static double R(double x)
{
// markup to nearest 5
return (((int)(x / 5)) * 5) + ((x % 5) > 0 ? 5 : 0);
}
나는 이것을 찾고 있었지만 내 예는 4.2769와 같은 숫자를 가져다가 4.3과 같은 범위에 놓는 것입니다. 똑같지는 않지만 도움이된다면 :
Model.Statistics.AverageReview <= it's just a double from the model
그때:
@Model.Statistics.AverageReview.ToString("n1") <=gives me 4.3
@Model.Statistics.AverageReview.ToString("n2") <=gives me 4.28
기타...
사용 Math.Round
:
double roundedValue = Math.Round(value, 0)
var roundedVal = Math.Round(2.5, 0);
결과는 다음과 같습니다.
var roundedVal = 3
Math.Round(number)
가장 가까운 정수로 반올림 사용 .