2009-09-11 3 views
0

그것은 사소한 것처럼 보이지만, 나는 이것에 대한 깨끗한 알고리즘을 찾을 수 없습니다. 내가 2186..NET에서 Progressbar의 증가 단계를 결정하는 방법은 무엇입니까?

내 총 행을 계산할 수 있습니다

가 그럼 난 내가 할 생각 100분의 2,186 = 21 그럼 내가 Backgroundworker.reportprocess 내부 currentRowNr를 ++ (증가 것이라고 생각 (내 modNr 될 것이다)) if (currentRowNr % modNr == 0) 증분 진행 막대를 수행하십시오.

진행률 표시 줄이 이제는 올바르게 작동하는 것처럼 보입니다. 그러나 100으로 멈추지 않습니다. 숫자가 최대 100 개 이상이되는 예외가 있습니다. 알고리즘이 잘못되었습니다.

깨끗한 해결책이 있어야하며 너무 복잡합니다. 수학에 능숙한 사람?

;-)는

답변

3

당신이 1 씩 진행 막대의 값을 증가 이제 0 2186 및 최소 속성에 당신이 당신의 처리에 단일 항목을지나 가지고 때마다 progessbar의 최대 속성을 설정 감사드립니다. progessbar가 당신을 대신해서 처리 할 것이기 때문에 알고리즘에 대한 필요성을 전혀 제거합니다.

+0

실제로 이것은 알고리즘이라고 생각합니다. –

+0

사실, progessbar에는 이미 문제를 해결하는 알고리즘이 제공됩니다. 그래도 알고리즘에 대한 명령어 세트를 호출 할 수 있다고 가정합니다. –

1

것은 분명하다 : = 101 * 21 2,121 및 2,142, 2,163, 2,184 또한 간단한 반올림 문제> 100

것이다.
modNr로 2186/100 + 1 = 22를 사용하면 마지막 히트시 99로 끝납니다. 초정밀을 위해 Qua의 대답을 따르고 진행 막대를 다시 구성하십시오.

관련 문제