How to format numbers in f-strings?

Formatting Numbers in f-strings

F-strings, also known as formatted string literals, provide a convenient way to include variables and expressions directly within a string. When it comes to formatting numbers in f-strings, you have several options to control the appearance and precision of the displayed values.

Numeric Formatting Specifiers

In f-strings, you can use various numeric formatting specifiers to control the output of numbers. Here are some common specifiers:

  1. General Formatting: The default format is to display the number as is, without any additional formatting.

    number = 12.3456
    print(f"The number is: {number}")  # Output: The number is: 12.3456
  2. Fixed-Point Notation: To control the number of decimal places, you can use the :.<n>f specifier, where <n> is the desired number of decimal places.

    number = 12.3456
    print(f"The number is: {number:.2f}")  # Output: The number is: 12.35
  3. Exponential Notation: To display the number in scientific notation, use the :.nE specifier, where n is the number of decimal places.

    number = 12345.6789
    print(f"The number is: {number:.2E}")  # Output: The number is: 1.23E+04
  4. Thousands Separators: To add thousands separators (e.g., commas), use the :, specifier.

    number = 1234567.89
    print(f"The number is: {number:,}")  # Output: The number is: 1,234,567.89
  5. Percentage Format: To display the number as a percentage, use the :.nf% specifier, where n is the number of decimal places.

    percentage = 0.7654
    print(f"The percentage is: {percentage:.2%}")  # Output: The percentage is: 76.54%
  6. Alignment and Width: You can also control the alignment and width of the number using the :<width> and :<width>.<precision>f specifiers.

    number = 12.3456
    print(f"The number is: {number:10.2f}")  # Output: The number is:     12.35
    print(f"The number is: {number:>10.2f}")  # Output: The number is:      12.35

Mermaid Diagram

Here's a Mermaid diagram that illustrates the different numeric formatting specifiers in f-strings:

graph TD A[General Formatting] --> B[Fixed-Point Notation] A --> C[Exponential Notation] A --> D[Thousands Separators] A --> E[Percentage Format] A --> F[Alignment and Width] B[Fixed-Point Notation] --> B1[{:.2f}] C[Exponential Notation] --> C1[{:.2E}] D[Thousands Separators] --> D1[{:,}] E[Percentage Format] --> E1[{:.2%}] F[Alignment and Width] --> F1[{:10.2f}] F --> F2[{:>10.2f}]

This diagram shows the different formatting options available for numbers in f-strings, including fixed-point notation, exponential notation, thousands separators, percentage format, and alignment and width control.

Real-World Examples

Let's consider some real-world examples to illustrate the use of these numeric formatting specifiers:

  1. Currency Display: Suppose you're building an e-commerce application and need to display product prices. You can use the thousands separator and fixed-point notation to format the prices.

    price = 49.99
    print(f"The price is: ${price:,.2f}")  # Output: The price is: $49.99
  2. Scientific Measurements: If you're working with scientific data, you might need to display values in scientific notation.

    distance = 123456789.0
    print(f"The distance is: {distance:.2E} meters")  # Output: The distance is: 1.23E+08 meters
  3. Percentage Calculations: When dealing with percentages, the percentage format specifier can be very useful.

    discount = 0.25
    print(f"The discount is: {discount:.0%}")  # Output: The discount is: 25%
  4. Alignment in Tabular Data: When displaying data in a tabular format, you can use the alignment and width specifiers to ensure proper column alignment.

    name = "John Doe"
    age = 35
    salary = 75000.0
    print(f"Name: {name:20} Age: {age:>5} Salary: {salary:>10,.2f}")
    # Output: Name: John Doe         Age:    35 Salary:  75,000.00

By mastering the use of numeric formatting specifiers in f-strings, you can create more readable and visually appealing output in your Python applications, making it easier for users to understand and interpret the data.

0 Comments

no data
Be the first to share your comment!