Mike C.
Mike C.

Reputation: 1921

Dynamically Formatting Floats to Variable Decimal Places Using f-strings in Python

I've previously asked about dynamically adjusting the number of decimal places in a float when formatting with f-strings in Python. While I found similar questions that address aspects of dynamic formatting using f-strings, none specifically tackle the challenge of varying the precision (decimal places) based on a variable.

The closest discussions I found were focused on [insert aspect, e.g., alignment, width, etc.], which isn't quite what I'm struggling with. My goal is to format a float to a number of decimal places that is determined at runtime.

EXAMPLE

    n = 5  # The number of decimal places should be dynamic
value = 0.345
# Desired output: '0.34500', but with 'n' determining the number of zeroes
value = 0.345

Attempts to directly apply solutions from related questions have not yielded the results I need, as they primarily deal with static formatting or do not address precision directly.

Question: How can I modify the f-string syntax to accommodate a variable that dictates the number of decimal places in the formatted output? I'm looking for a way to make the precision of a floating-point number in an f-string as flexible as the width or alignment.

Upvotes: 17

Views: 4959

Answers (1)

CDJB
CDJB

Reputation: 14546

This should work:

n = 5
value = 0.345
print(f'{value:.{n}f}') 

Output:

0.34500

Upvotes: 28

Related Questions