Мне необходимо в выражении, например:
print (2/100000)
получить на выходе 0.00002, а не 2e-05?!
С функциями float или round(x,8) тоже самое выходит.
Уточню, необходимо округление до 8 знаков после запятой.
Мне необходимо в выражении, например:
print (2/100000)
получить на выходе 0.00002, а не 2e-05?!
С функциями float или round(x,8) тоже самое выходит.
Уточню, необходимо округление до 8 знаков после запятой.
Чтобы вывести число с плавающей точкой в фиксированном формате с указанным числом знаков после запятой:
>>> '%.8f' % 2e-5
'0.00002000'
Если как переменные заданы:
>>> n = 2e-5
>>> precision = 8
>>> f'{n:.{precision}f}'
'0.00002000'
Так пойдет?
'%0.5f' % (2/100000)
Предлагаю ещё вот такую функцию
def fixed_num(n, prec=0):
return f"{n:.{prec}f}"
fixed_num(2/100000, 5)
'0.00002'
PEP 498: Formatted string literals
Воспользовавшись идеей из соседнего ответа, можно определить функцию отображающую максимально возможное количество знаков без "научной нотации":
import decimal
ctx = decimal.Context()
# prec - precision - количество значащих знаков, не округление до знака
def float_to_str(f, prec = 18): # 18 знаков хватит всем (c) BG
ctx.prec = prec
d1 = ctx.create_decimal(repr(f))
return format(d1, 'f')
>>> float_to_str(2/100000)
'0.00002'
>>> float_to_str(7/130000)
'0.00005384615384615385'
>>> float_to_str(7/130000)
'0.000053846154'
# округлять до знака нужно заранее
>>> float_to_str(round(7/23, 8))
'0.30434783'
0.00002000000000000000163606107828062619091724627651274204254150390625? Кому это нужно? =)
– vp_arth
May 14 '18 at 09:24