C# Percent ("P") Format Specifier

The percent ("P") format specifier in C# is used to format numbers as percentages. It multiplies the number by 100 and appends a percentage sign (%) to create a string representation of the percentage value.

Syntax

Following is the syntax for using the percent format specifier −

number.ToString("P")        // Default precision (2 decimal places)
number.ToString("Pn")       // Specify n decimal places

Where n represents the number of decimal places to display after the decimal point.

How It Works

The percent format specifier performs the following operations −

  • Multiplies the original number by 100

  • Rounds the result to the specified decimal places (default is 2)

  • Appends the percentage symbol (%)

  • Applies culture-specific formatting rules

Percent Format Conversion Process 0.975746 Original × 100 97.5746 Multiplied Round + % 97.57 % Result Default precision is 2 decimal places

Using Default Percent Format

Example

using System;
using System.Globalization;

class Demo {
    static void Main() {
        double val = 0.975746;
        Console.WriteLine("Original value: " + val);
        Console.WriteLine("Percent format: " + val.ToString("P", CultureInfo.InvariantCulture));
        
        double smallVal = 0.1234;
        Console.WriteLine("Small value: " + smallVal.ToString("P", CultureInfo.InvariantCulture));
        
        double largeVal = 1.5;
        Console.WriteLine("Large value: " + largeVal.ToString("P", CultureInfo.InvariantCulture));
    }
}

The output of the above code is −

Original value: 0.975746
Percent format: 97.57 %
Small value: 12.34 %
Large value: 150.00 %

Using Precision Specifiers

Example

using System;
using System.Globalization;

class Demo {
    static void Main() {
        double val = 0.975746;
        Console.WriteLine("P0 (no decimals): " + val.ToString("P0", CultureInfo.InvariantCulture));
        Console.WriteLine("P1 (1 decimal): " + val.ToString("P1", CultureInfo.InvariantCulture));
        Console.WriteLine("P2 (2 decimals): " + val.ToString("P2", CultureInfo.InvariantCulture));
        Console.WriteLine("P4 (4 decimals): " + val.ToString("P4", CultureInfo.InvariantCulture));
    }
}

The output of the above code is −

P0 (no decimals): 98 %
P1 (1 decimal): 97.6 %
P2 (2 decimals): 97.57 %
P4 (4 decimals): 97.5746 %

Comparison of Precision Levels

Format Specifier Result Description
P0 98 % No decimal places (rounded)
P1 97.6 % One decimal place
P2 97.57 % Two decimal places (default)
P4 97.5746 % Four decimal places

Common Use Cases

Example

using System;
using System.Globalization;

class Demo {
    static void Main() {
        // Financial calculations
        double interestRate = 0.0425;
        Console.WriteLine("Interest Rate: " + interestRate.ToString("P2", CultureInfo.InvariantCulture));
        
        // Completion percentage
        double completed = 0.75;
        Console.WriteLine("Project Completed: " + completed.ToString("P0", CultureInfo.InvariantCulture));
        
        // Success rate
        double successRate = 0.892;
        Console.WriteLine("Success Rate: " + successRate.ToString("P1", CultureInfo.InvariantCulture));
    }
}

The output of the above code is −

Interest Rate: 4.25 %
Project Completed: 75 %
Success Rate: 89.2 %

Conclusion

The percent ("P") format specifier in C# provides an easy way to convert decimal values to percentage representations by multiplying by 100 and adding the % symbol. Use precision specifiers like P0, P1, P2 to control the number of decimal places displayed for different formatting requirements.

Updated on: 2026-03-17T07:04:35+05:30

17K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements