How about this
x = 3.14159265
print(f'pi = {x:.2f}')
Docs for f-strings
Answer from JBernardo on Stack Overflowpython - Fixed digits after decimal with f-strings - Stack Overflow
Pythonic way to show 2 decimal places in f-strings?
Do the second one, just don’t worry about rounding it. Let the formatting do the rounding for display.
More on reddit.comTrying to format a list of floats with f-strings
python - Displaying floats using F-string - Stack Overflow
How to format floating numbers using inbuilt methods in Python?
How do I limit a float to only show 2 decimal places?
How do I display infinity or nan values properly?
Include the type specifier in your format expression:
>>> a = 10.1234
>>> f'{a:.2f}'
'10.12'
When it comes to float numbers, you can use format specifiers:
f'{value:<width>.<precision>}'
where:
valueis any expression that evaluates to a numberwidthspecifies the number of characters used in total to display, but ifvalueneeds more space than the width specifies then the additional space is used.precisionindicates the number of characters used after the decimal point
What you are missing is the type specifier for your decimal value. In this link, you an find the available presentation types for floating point and decimal.
Here you have some examples, using the f (Fixed point) presentation type:
# notice that it adds spaces to reach the number of characters specified by width
In [1]: f'{1 + 3 * 1.5:10.3f}'
Out[1]: ' 5.500'
# notice that it uses more characters than the ones specified in width
In [2]: f'{3000 + 3 ** (1 / 2):2.1f}'
Out[2]: '3001.7'
In [3]: f'{1.2345 + 4 ** (1 / 2):9.6f}'
Out[3]: ' 3.234500'
# omitting width but providing precision will use the required characters to display the number with the the specified decimal places
In [4]: f'{1.2345 + 3 * 2:.3f}'
Out[4]: '7.234'
# not specifying the format will display the number with as many digits as Python calculates
In [5]: f'{1.2345 + 3 * 0.5}'
Out[5]: '2.7344999999999997'
I've got a number that needs to be rounded to 2 decimal places. Getting the round is easy, but if the number is a whole number or only has 1 digit beyond the decimal the rounding doesn't properly show 2 decimal places.
answer = 1 print(round(float(answer),2)) >> 1.0
I really like f-strings, so I would use this:
answer = 1
print(f"{round(float(answer),2):.2f}")
>> 1.00
Is there a neater or more readable method of doing this?
Do the second one, just don’t worry about rounding it. Let the formatting do the rounding for display.
Also, formatting to round things is one instance where I sometimes prefer the .format() method to fstrings, as you can define the formatting once and use it again and again:
>>> FORMAT_2DP = "{:.2f}"
>>> numbers = 1, 3, 4, 5
>>> for number in numbers:
... print(FORMAT_2DP.format(number))
...
1.00
3.00
4.00
5.00
roots = [sqrt(i) for i in numbers]
print(f'Roots: {roots}')So Im trying to gain control of the precision of my floats, as Im practicing list comprehension and such, this particular print doesn't work.
I really dig these new fstrings but I cant figure out where to put in the ':.3f in the code.
print(f'Roots: {[root for root in roots]}')This is as far as ive come but when i put in the formatter on root its 'invalid syntax'