Home
C#
Get Percentage From Number
Updated May 30, 2021
Dot Net Perls
Percentages. In C# programs we often find percentages helpful. With the numbers 1 and 2, we can get a percentage of 50%. We display and process percentages with doubles.
Method notes. With these methods, we solve an annoying rounding problem. Percentages can often be used to improve displayed values for users.
double
First example. We use string.Format to display 2 numbers or ratio as a percentage. The 3 methods all handle percentages. But their logic is implemented in different ways.
Note DisplayPercentage accepts a double that is a ratio. The "0.0%" indicates a percentage with 1 digit past the decimal place.
Note 2 The second DisplayPercentage accepts 2 parameters and then passes the ratio of them to the other method. It casts to double.
Also GetPercentageString accepts a double containing a ratio and returns a percentage string using ToString().
ToString
using System; class Program { static void Main() { // Display percentage of visits that resulted in purchases. int purchases = 10; int visitors = 120; DisplayPercentage((double)purchases / visitors); // Display 50 percent with overloaded method. DisplayPercentage(1, 2); // Write percentage string of nine tenths. Console.WriteLine(GetPercentageString((double)9 / 10)); } /// <summary> /// This method writes the percentage form of a double to the console. /// </summary> static void DisplayPercentage(double ratio) { string percentage = string.Format("Percentage is {0:0.0%}", ratio); Console.WriteLine(percentage); } /// <summary> /// This method writes the percentage of the top number to the bottom number. /// </summary> static void DisplayPercentage(int top, int bottom) { DisplayPercentage((double)top / bottom); } /// <summary> /// This method returns the percentage-formatted string. /// </summary> static string GetPercentageString(double ratio) { return ratio.ToString("0.0%"); } }
Percentage is 8.3% Percentage is 50.0% 90.0%
Example 2. Here we convert 2 integers into a percentage manually with division and multiplication. Sometimes you can need raw percentages.
Detail The double must be assigned to a value cast to double. If you omit the cast, your value will be rounded and probably useless.
Tip When casting to double, you do not need to surround the entire expression with parentheses.
Divide
Info Math.Floor rounds down to the nearest integer. And Math.Ceiling rounds up to the nearest integer.
Math.Floor
Math.Ceiling
Math.Round
using System; class Program { static void Main() { // We want to have 92.9% from these two numbers. int valid = 92; int total = 99; // First multiply top by 100 then divide. double percent = (double)(valid * 100) / total; // <-- Use cast // This is the percent number. Console.WriteLine(percent); Console.WriteLine(Math.Floor(percent)); Console.WriteLine(Math.Ceiling(percent)); Console.WriteLine(Math.Round(percent, 1)); } }
92.9292929292929 92 93 92.9
Modulo. The percentage sign in the C# language has a use as the modulo operator. This forms an expression that will return the remainder of a division of the 2 operands.
Modulo
Tip With modulo division, we can run an operation every N times. This has uses in many programs.
A summary. First we saw how to format ratios as percentages with 3 different methods. Second, we saw how to get a percentage value directly with math, and then round it.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on May 30, 2021 (edit).
Home
Changes
© 2007-2025 Sam Allen