Reputation: 1921
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
Reputation: 14546
This should work:
n = 5
value = 0.345
print(f'{value:.{n}f}')
Output:
0.34500
Upvotes: 28