RobinHood
RobinHood

Reputation: 2397

Percentage calculation

I am working in progress bar concept in ASP.NET MVC 2. Here i have a DropDownList which has 10 values. i want to calculate the percentage for progress bar, e.g. 10 values from DropDownList and i am having a query which returns the value 2. so, out of 10 values i am getting 2. "20 % completed" should be displayed.. How to do this calculation

Upvotes: 90

Views: 364391

Answers (8)

Yotic
Yotic

Reputation: 153

//For other people

If you need calculate using negative numbers:

double minValue = -100;
double value = 30;
double maxValue = 100;
double perc = (value - minValue) / (maxValue - minValue);
Console.WriteLine((perc * 100) + "%");

Upvotes: 0

Christian Findlay
Christian Findlay

Reputation: 7712

Bear in mind that you may need to cast one of the numbers to double if you have two ints

(double)i / events.Count * 100

Upvotes: 6

Nick Zhou
Nick Zhou

Reputation: 11

In my case, I set two ints, and trying to calculate the percentage, and always get 0;

my code (before)

int Ff_Crm_Count = Ff_Crm.Count();
int Unfollowed_Ff_Crm_Count = Unfollowed_Ff_Crm.Count();
int The_Percentage = (Unfollowed_Ff_Crm_Count / Ff_Crm_Count) * 100);

after doing research (after)

double Ff_Crm_Count = Ff_Crm.Count();
double Unfollowed_Ff_Crm_Count = Unfollowed_Ff_Crm.Count();
double The_Percentage = Math.Round((double)((Unfollowed_Ff_Crm_Count / Ff_Crm_Count) * 100),2);

Upvotes: 0

Sonador
Sonador

Reputation: 514

Mathematically, to get percentage from two numbers:

percentage = (yourNumber / totalNumber) * 100;

And also, to calculate from a percentage :

number = (percentage / 100) * totalNumber;

Upvotes: 17

Bronumski
Bronumski

Reputation: 14272

You can hold onto the percentage as decimal (value \ total) and then when you want to render to a human you can make use of Habeeb's answer or using string interpolation you could have something even cleaner:

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

or

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

Upvotes: 16

Habeeb
Habeeb

Reputation: 8017

With C# String formatting you can avoid the multiplication by 100 as it will make the code shorter and cleaner especially because of less brackets and also the rounding up code can be avoided.

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

// Output - 16.67%

Upvotes: 55

Sogger
Sogger

Reputation: 16142

Using Math.Round():

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

or manually rounding:

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

Upvotes: 108

Nicolas Repiquet
Nicolas Repiquet

Reputation: 9265

(current / maximum) * 100. In your case, (2 / 10) * 100.

Upvotes: 99

Related Questions