Уведомления

Группа в Telegram: @pythonsu

#1 Июль 15, 2019 23:54:22

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

как избавится от экспоненты в переменной Decimal

@cckyi_boxxx
подумывал юзать numpy или pandas, у них свои типы и работают они точно
??? Насколько знаю у них double точно такой как и в питоне. Ну может формат принта другой.

@cckyi_boxxx
возможно под питон есть что-то позволяющее работать точно как numpy но не с массивами а с переменными (кроме Decimal)?

Это трудно понять. Скажем так, в питоне есть числа с которыми вычисления ведутся точно. Это целые числа. В sympy можете еще работать с рациональными дробями. Будет абсолютно точно. Еще неплохой результат получается если представлять числа цепными дробями. Результат будет вида 19/15 а не 1.26666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
6666666666666666666666666666666666666666666666666666666666666666666666
66666666667.

Вот вы на этом конкретном примере покажите какого вы всеже результата хотите добиться своим форматированем?



Отредактировано doza_and (Июль 16, 2019 00:07:39)

Офлайн

#2 Июль 19, 2019 03:24:57

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

как избавится от экспоненты в переменной Decimal

Ну с форматированием я разобрался, просто генерю строку если есть экспонента при помощи своей функции а если нет то штатным str, что до других либ тут уже вопрос больше относится к стабильности точных вычислений на десятичных дробях, ну и простоте работы разумеется, цепные это хорошо но тут я точно испытаю немало секаса для преобразования из десятичных и обратно.

что до numpy он юзает сишную либу для вычислений, и соответственно свои типы, вот они https://docs.scipy.org/doc/numpy-1.15.0/user/basics.types.html , но когда доходит до взаимодействия с python float переменными я не знаю как он себя ведет.



Офлайн

#3 Июль 19, 2019 09:08:09

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

как избавится от экспоненты в переменной Decimal

@cckyi_boxxx
но когда доходит до взаимодействия с python float переменными я не знаю как он себя ведет.
А разве последний параграф в разделе Extended Precision не дает ответа на этот впорос?



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

Офлайн

#4 Июль 19, 2019 09:44:25

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

как избавится от экспоненты в переменной Decimal

@cckyi_boxxx
уже вопрос больше относится к стабильности точных вычислений на десятичных дробях
Ну тут все просто.
1. И в базовом питоне и в numpy нет типа “десятичные дроби” (я такой тип вообще ни в одном языке не встречал).
2. Если вы имеете ввиду float, np.float то ни о каких точных вычислениях не может быть и речи. Это типы для приближенных вычислений которые всегда дают приближенный результат.
3. Компьютер не человек, все вычисления с любыми числами всегда стабильны (в том смысле что они дают абсолютно идентичные результаты при последовательных запусках программы).



Офлайн

#5 Июль 19, 2019 10:30:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как избавится от экспоненты в переменной Decimal

doza_and
я такой тип вообще ни в одном языке не встречал
Есть такой тип



Офлайн

#6 Июль 19, 2019 11:11:16

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

как избавится от экспоненты в переменной Decimal

> в базовом питоне и в numpy нет типа “десятичные дроби” (я такой тип вообще ни в одном языке не встречал).
>> Есть такой тип

Это тип не десятичной, а простой дроби. В Python-е он тоже есть, называется Fraction.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Июль 20, 2019 18:30:24

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

как избавится от экспоненты в переменной Decimal

Всем спасибо за ответы!

doza_and
И в базовом питоне и в numpy нет типа “десятичные дроби” (я такой тип вообще ни в одном языке не встречал).
сорян, неправильно выразился я говорил именно про float , и я понимаю что с этим типом точных вычислений не жди, но когда читал книгу “Python и анализ данных” автор Уэс Маккинни, точно помню что он описывал ситуацию при которой питоновский float при выдавал 0.1 + 0.2 = 0.3000000000000001 (точно не помню выражение но суть понятна, при этом numpy работал четко , говоря о точности я именно это имел ввиду.

JOHN_16, настолько глубоко я еще не изучал этот вопрос, но спасибо за ссыль, прочел, теперь есть представление что к чему.

Rodegast, очередной раз спасибо за подсказку, я не знал о существовании Fraction, выделю время и с удовольствием его поковыряю, если окажется что он лучше взаимодействует со стандартными типами python, и при этом точность вычислений достаточна то скорее всего заменю им Decimal.

И есть еще один интересный момент, в какой-то литературе читал что к из питонокода можно юзать фортран, сейчас вопрос даже не о том как это делать, с этим при необходимости разберусь сам, вопрос в том удобнее-ли и надежнее-ли он для точных вычислений чем то что есть под питон?



Офлайн

#8 Июль 20, 2019 20:45:52

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

как избавится от экспоненты в переменной Decimal

@cckyi_boxxx
вопрос в том удобнее-ли и надежнее
Не удобнее и не надежнее. Фортран вообще отживший язык. Если нужна абсолютная точность то используйте системы кмпьютерной алгебры.



Отредактировано doza_and (Июль 20, 2019 23:12:20)

Офлайн

#9 Июль 20, 2019 21:43:49

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

как избавится от экспоненты в переменной Decimal

doza_and, а не будет-ли наглостью попросить вас кинуться в меня литературой или кратким мануалом по по реализации “системы компьютерной алгебры” на python?



Офлайн

#10 Июль 20, 2019 23:13:17

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

как избавится от экспоненты в переменной Decimal

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version