0

Есть 2 числа. При их умножении, float изменяет их формат

>>> x = 0.0001347
>>> y = 0.0005388
>>> print(x*y)
>>>7.257636e-08

Как сделать так, чтобы вывести число в привычном виде (0.0000000726) c типом float и с фиксированным количеством знаков после точки типа (".10f" %(x*y))

Dmitry
  • 7,859
leexxg
  • 313
  • 3
    print("%.10f" %(x*y)) – andreymal Dec 09 '17 at 22:18
  • 4
    в чём отличие "%.10f" % f от желаемого? Ясно ли вам, что float внутри компьютера не хранится ни в 1e-2 ни в 0.01. Формат имеет значение только когда вы строковое представление хотите. Пример как число с плавающей точкой в памяти представлено – jfs Dec 09 '17 at 22:19
  • отличие в том, что у меня есть значение 0.0000000726, python преобразует его в 7.257636e-08, я добавляю его в список, при извлечении из списка, я не могу "переконвертировать" его в float и получаю ошибку, ValueError: could not convert string to float: 'e' Я вообще не хочу, чтобы число конвертировалось в формат с 'e', возможно ли, как-то этого добиться? – leexxg Dec 19 '17 at 22:21
  • 1
    @leexxg: "%.10f" формат никогда вам '7.257636e-08' строку из float не выдаст. Вы возможно не тот код, который думаете выполняете. Создайте минимальный но полный пример кода, который демонстрирует проблему. Явно приведите ввод, желаемый вывод и что вместо этого получается [mcve]. Используйте @ синтакс, если хотите, чтобы уведомление о вашем комментарии пришло. Информацию необходимую для ответа следует в сам вопрос помещать. Нажмите [edit] – jfs Jan 24 '18 at 09:03

2 Answers2

1

В привычном виде, это значит, в строковое представление числа, при этом само число не меняется.

>>> x = 0.0001347
>>> y = 0.0005388
>>> z = (x*y)
>>> print("%.10f" %(z))
0.0000000726
>>> z
7.257636e-08
1

Мода на f-string, поэтому можно вот так с этим работать

>>> x = 0.0001347
>>> y = 0.0005388
>>> print(f"{x*y:.10f}") 
0.0000000726

Здесь можно почитать на англ

Dmitry
  • 7,859