2010-12-30 14 views
38

Pracuję w pasku postępu koncepcji w ASP.NET MVC 2. Tutaj mam DropDownList, który ma 10 wartości. chcę obliczyć procent na pasku postępu, np. 10 wartości z DropDownList i mam kwerendę, która zwraca wartość 2. tak, z 10 wartości otrzymuję 2. "20% ukończone" powinno być wyświetlane .. Jak wykonać to obliczenieObliczanie procentowe

Odpowiedz

46

(current/maximum) * 100. W twoim przypadku: (2/10) * 100.

+0

dziękuję lot..how zaokrąglić że .. dla ex (2/11) * 100 oznacza, co powinienem zrobić ... – RobinHood

+1

użyj Math.Round, a następnie zdecyduj, ile miejsc dziesiętnych chcesz :) – WestDiscGolf

+1

Prześlij do int. (int) ((2.0/11.0) * 100.0) = 18. –

49

Korzystanie Math.Round():

int percentComplete = (int)Math.Round((double)(100 * complete)/total); 

lub ręcznie zaokrągleń:

int percentComplete = (int)(0.5f + ((100f * complete)/total)); 
+0

Tak więc, 'complete' i' total' powinno być 'int' lub' double'? Thanks. – Si8

+0

Nie ma to znaczenia, jeśli użyjesz go dokładnie tak, jak tutaj napisano. Udowodnienie tego stwierdzenia jest ćwiczeniem pozostawionym czytelnikowi :) – Sogger

+0

Nigdy nie powinieneś używać liczby zmiennoprzecinkowej (tj. Podwójnej) dla pieniędzy – stuartdotnet

23

z C# String formatowanie można uniknąć mnożenia przez 100, jak to uczynić kod krótszy i czystsze zwłaszcza z powodu mniejszej wspornikami można także uniknąć kodowania zaokrągleń.

(current/maximum).ToString("0.00%"); 

// Wyjście - 16,67%

2

w matematyczne dla dostać procent od dwóch numerem:

percentage=(yourNumber/totalNumber)*100; 

i liczona od odsetek:

number=(percentage/100)*totalNumber; 
0

Możesz zatrzymać procent jako dziesiętny (value \ total), a następnie gdy chcesz oddać człowiekowi można wykorzystać Habeeb'sanswer lub używając string interpolation można mieć coś jeszcze czystsze:

var displayPercentage = $"{(decimal)value/total:P}"; 

lub

//Calculate percentage earlier in code 
decimal percentage = (decimal)value/total; 
... 
//Now render percentage 
var displayPercentage = $"{percentage:P}";