Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 12, 2015 18:37:58

borsovan
Зарегистрирован: 2015-02-12
Сообщения: 9
Репутация: +  0  -
Профиль  

деление Float

Здарова, товарищи Питонщики.
Столкнулся с проблемой.
Когда делю float число например 1.02105, на выходе получаю что то вроде 6.25e-05.
Понятно, что это цифра какая то но она совсем не читабельна.
Как это обойти?

Отредактировано borsovan (Фев. 12, 2015 18:41:51)

Офлайн

#2 Фев. 12, 2015 19:47:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

деление Float

Никак это не обойти. Научиться читать такие цифры. Они такие во всех языках программирования см http://en.wikipedia.org/wiki/Scientific_notation.

p.s.
конечно можно в другом формате число напечатать, но это делать не надо.
1e-30 = 0.0000000000000000000000000000001
что из них более читаемо?



Отредактировано doza_and (Фев. 12, 2015 19:50:16)

Офлайн

#3 Фев. 12, 2015 19:54:53

borsovan
Зарегистрирован: 2015-02-12
Сообщения: 9
Репутация: +  0  -
Профиль  

деление Float

doza_and
1e-30 = 0.0000000000000000000000000000001
что из них более читаемо?
Ну хоть так)
В отчетах же не напишешь такие 1e-30 цифры.
Как это на питоне написать чтоб конфертировал? окажите помощь друзья

Офлайн

#4 Фев. 12, 2015 20:10:06

Paranoia_Agent
Зарегистрирован: 2014-06-25
Сообщения: 75
Репутация: +  5  -
Профиль   Отправить e-mail  

деление Float

borsovan
В отчетах же не напишешь
Как раз и напишешь:
1e-30 # Один на десять в минус тридцатой степени 
6.25e-05 # Шесть целых двадцать пять сотых на десять в минус пятой степени

Офлайн

#5 Фев. 12, 2015 20:58:00

bulgakov
От:
Зарегистрирован: 2011-08-25
Сообщения: 12
Репутация: +  1  -
Профиль   Отправить e-mail  

деление Float

если по-простому представь что e в числе 1e-30 это разделительный знак, точка или запятая, 30 это количество знаков на которое нужно сдвинуть этот разделительный знак чтобы получить число, а минус между 1е и 30 это направление порядка сдвига, если минус свдигать влево если плюс в право, итого получается что нам нужно сдвинуть запятую после единицы которая у нас представлена в виде буквы е на 30 знаков влево чтобы получить это число. Эта штука называется экспоненциальная запись. Читать про нее тут



Офлайн

#6 Фев. 12, 2015 21:03:48

borsovan
Зарегистрирован: 2015-02-12
Сообщения: 9
Репутация: +  0  -
Профиль  

деление Float

bulgakov
Эта штука называется экспоненциальная запись.
А можно как нибудь указать что бы не делал питон эту экспоненциальную запись?
Или скриптик готовый для перевода в не экспоненциальную запись.!

Проблема в том что некоторые числа он не переводит в экспоненциальную запись, а не которые переводит. Вот и получается в таблице неразбериха…

А люди которые будут смотреть эту таблицу скрее всего не поймут что это за экспоненциальная запись.

Отредактировано borsovan (Фев. 12, 2015 21:05:56)

Офлайн

#7 Фев. 12, 2015 21:16:44

bulgakov
От:
Зарегистрирован: 2011-08-25
Сообщения: 12
Репутация: +  1  -
Профиль   Отправить e-mail  

деление Float

from decimal import Decimal
num1 = 3651684984
num2 = 55146554564654
print(Decimal(num1)/Decimal(num2))



Офлайн

#8 Фев. 12, 2015 21:21:16

borsovan
Зарегистрирован: 2015-02-12
Сообщения: 9
Репутация: +  0  -
Профиль  

деление Float

bulgakov
Получилось)) Спасибо большое!

Тему можно закрывать!

Офлайн

#9 Фев. 12, 2015 22:28:48

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

деление Float

рано закрывать - нормального ответа так и не последовало. для подобных задач необходимо использовать форматирование строк с помощью format:

>>> value=6.25e-05
>>> '{:f}'.format(value)
'0.000063'
format имеет широкие возможности, поэтому смотрите документацию. Использование Decimal в данном случае не требуется, decimal нужен совсем для другого



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version