Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2011 18:34:49

eiyawii
От:
Зарегистрирован: 2011-08-04
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

Цель такова, что надо с максимальной точностью делать вычисления, сейчас программа использует типа данных float. Некоторые числа я перевел в Decimal и теперь при операциях умножения-деления возбуждается ошибка “unsupported type opetand for *,/”, видимо из-за того, что данные должны быть одного типа. Переводить всё в decimal не могу, так как там задан массив значений, или можно массив scipy.arange перевести в decimal?

И еще в догонку, задавая малое значение в list=sp.arange(0,1.8,0.000000001) получаю в ответ, что массив слишком большой (“array is too big”, если поменьше сделать, то memoryError) - можно ли это обойти как-нибудь? спасибо за внимание.



Офлайн

#2 Ноя. 18, 2011 19:36:50

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

Как подружить типы float и Decimal в python'e?

У меня сложилось мнение что сложности которые у вас возникли в основном преодолеваются пересмотром алгоритма решения задачи. Можно посоветовать вам перейти на python 64 и купить побольше памяти и процессоров. Но думаю что если вы изложите суть задачи, можно будет предложить более простое решение.



Офлайн

#3 Ноя. 19, 2011 00:24:01

label tea
От:
Зарегистрирован: 2011-11-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

Immense and wonderful effort by the admin i reflect you want more ideas share at the place..
And get more facts by read this site..
utah pool builders



Офлайн

#4 Ноя. 19, 2011 06:32:41

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

doza_and
Флоаты в питоне 64 ни чем не отличаются от флоатов на питоне 32.



Офлайн

#5 Ноя. 19, 2011 07:40:43

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

Как подружить типы float и Decimal в python'e?

Я про сверхдлинные массивы писал см второй абзац топикстартера



Отредактировано (Ноя. 19, 2011 07:41:18)

Офлайн

#6 Ноя. 23, 2011 17:17:42

eiyawii
От:
Зарегистрирован: 2011-08-04
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

doza_and
У меня сложилось мнение что сложности которые у вас возникли в основном преодолеваются пересмотром алгоритма решения задачи. Можно посоветовать вам перейти на python 64 и купить побольше памяти и процессоров. Но думаю что если вы изложите суть задачи, можно будет предложить более простое решение.
думаю суть задачи мне не изложить, слишком специализированная и неинтересная) но точность расчетов очень важна. сейчас приведу простой пример, как можно получить такую ошибку, в которой надо как-то подружить decimal & float:
from decimal import \
Decimal as dec, getcontext

getcontext().prec=50

print dec(1)/7.0



Офлайн

#7 Ноя. 23, 2011 17:22:12

eiyawii
От:
Зарегистрирован: 2011-08-04
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

собрался я с силами и перевел практически все переменные в decimal, но возникла другая подобная проблема - decimal и complex тоже не дружат :)



Офлайн

#8 Ноя. 24, 2011 08:14:11

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

Нужно избегать мешать decimal и float/complex, если хочешь точность 50 знаков, т.к. float имеет точность 16 знаков.
Пример:

>>> dec( "1" )/dec( "%.50f" % 0.1 )
Decimal('9.9999999999999990000000000000000999999999999999900')
При необходимости, можно создать свой класс ComplexDecimal и определить для него все операции.



Офлайн

#9 Ноя. 28, 2011 16:10:46

eiyawii
От:
Зарегистрирован: 2011-08-04
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подружить типы float и Decimal в python'e?

а можно ли как-то повысить точность float? установить большее число разрядов после запятой, 50, например?



Офлайн

#10 Ноя. 28, 2011 17:22:19

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

Как подружить типы float и Decimal в python'e?

нет (Правда у Воеводина вроде была работа, когда во входных данных возмущались значения а результат оценивался как матожидание множественных расчетов, вроде получалась эффективная дополнительная точность :) )
может вам в рациональных числах считать? http://docs.python.org/library/fractions.html



Отредактировано (Ноя. 28, 2011 17:25:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version