I know I can use format
in order to format a number to whatever format. What I want is to format to at most n digts.
This can be achieved using the g
-format-specifier. But there's one caveat here. What if my input is a really small number, e.g. -0.0000000001
. With g
this prints as -1e-10
, but I want it to return simply 0
.
I tried to do format(round(mynumber, 7))
, but that interestingly gave me -0
(with a leading -
) when mynumber
is negative near zero.
How can I format mynumber
to at most 7 digits without a leading sign, if the number is near zero?
Afterall this is my input and the expected result:
-0.0000000001 -> 0
0.0000000001 -> 0
3 -> 3
3.1415927 -> 3.1415927
or 0
is a short and quick way to replace negative zero:
for mynumber in -0.0000000001, 0.0000000001, 3, 3.1415927:
print(round(mynumber, 7) or 0)
Alternatively, also changing for example 3.0
to 3
:
for mynumber in -0.0000000001, 0.0000000001, 3, 3.1415927, 3.0:
x = round(mynumber, 7)
if x.is_integer():
x = int(x)
print(x)