2017-01-04 10 views
1

보고서에서 우리 클라이언트는 검사 된 항목이 100,000 개를 초과 할 수 있으며 보고서 메타 데이터 (XML 파일)에서 몇 개 항목의 수를 십진수로 나타 내기를 원합니다 "확인되었습니다".실제로 100 %가 아닌 백분율 100 %

그러나 실제로 모든 것이 정상인 경우가 아니라면 100 %가되어서는 안됩니다. 항목 수 때문에 표준 수학 연산과 String.Format()은 해당 반올림 오류를 수행 할 수 있습니다.

우아한 해결책이 있습니까?

고객은 99.99 %가 수학적으로 올바르지 않지만 99.999999999 %를 다루는 특수한 경우임을 인정합니다.

중요한 것은 체크 아웃하지 않은 항목이있을 때 보고서 데이터가 100 % 표시되지 않는다는 것입니다.

+0

내 생각은 백분율을 전달하는 대신 전달 된 항목을 전달 + 통과하므로! = 그렇다면 결코 100이라고 말하지도 말합니다. – BugFinder

+1

코드 예제가 없어도 double을 숫자로 사용하는 경우 대신 소수를 사용하십시오 (부동 소수점 숫자 유형이 아님) – Hypnobrew

+3

@Hypnobrew :'decimal'은 여전히 ​​부동 소수점 유형입니다. 이진 부동 소수점 형식이 아니라 단지 소수점 부동 소수점 형식입니다. –

답변

2

약간의 도우미 방법에는 어떤 문제가 있습니까?

public double GetPercentage(int checkedOk, int total) 
{ 
    if (checkedOk == total) 
     return 100.0; 

    var percentage = (100.0 * checkedOk)/total; 
    return percentage > 99.99 ? 99.99: percentage; 
} 

나는 '99 .99 '라는 마법 번호를 제거 하겠지만 아이디어는 얻을 수 있습니다.