문제

4개 열로 분할하려는 제품 브랜드 메뉴가 있습니다.따라서 39개의 브랜드가 있는 경우 각 열의 최대 항목 수가 10이 되도록 하고 싶습니다(마지막 열에 단일 간격이 있음).C#을 사용하여 열의 항목 수를 계산하는 방법은 다음과 같습니다.

int ItemCount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(BrandCount) / 4m));

그 모든 전환은 나에게 정말 추악한 것 같습니다.C#에서 정수에 대해 수학을 수행하는 더 좋은 방법이 있나요?

도움이 되었습니까?

해결책

캐스트 할 수 있습니다 :

int ItemCount = (int) Math.Ceiling( (decimal)BrandCount / 4m );

또한 int/decimal 결과 a decimal 캐스트 중 하나를 제거 할 수 있습니다.

int ItemCount = (int) Math.Ceiling( BrandCount / 4m );

다른 팁

왜 소수점을 사용하고 있습니까?

int ItemCount = (BrandCount+3)/4;

그만큼 +3 아래로보다 반올림합니다.

(37+3)/4 == 40/4 == 10
(38+3)/4 == 41/4 == 10
(39+3)/4 == 42/4 == 10
(40+3)/4 == 43/4 == 10

일반적으로 :

public uint DivUp(uint num, uint denom)
{
    return (num + denom - 1) / denom;
}

모드와 더 긴 대안.

ItemCount = BrandCount / 4;
if (BrandCount%4 > 0) ItemCount++;

아마도 이런 것을 시도해보십시오 ...가정 BrandCount 정수입니다.여전히 동일한 캐스트가 있지만 더 명확할 수 있습니다.

int ItemCount = (int)(Math.Ceiling(BrandCount / 4m));

나는 그 팬이 아니다. Convert 수업을 하고 가능하면 피합니다.항상 내 코드를 읽기 어렵게 만드는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top