Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2020, 13:14   #1
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
По умолчанию Иррациональные числа, как вывести? Python

При возведении 2 в степень 0.5 (квадратный корень из двух) Python выводит 1.4142135623730951, тем самым сокращая иррациональное число, но для меня мало шестнадцати знаков после запятой, можно ли как-то увеличить вывод до какого-то конкретного числа?
P.S.
я максимальный чайник, который что-то придумал, поясняйте точнее, если не трудно.
DoctorDeathDDrac вне форума Ответить с цитированием
Старый 18.01.2020, 16:15   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Прочтите, в прикрепленном файле, пункт 2.2.2. Вещественные числа.
Как Python посчитает "0.1+0.2=?"
Ответ:
Цитата:
>>> 0.1+0.2
0.30000000000000004
>>>
Вложения
Тип файла: pdf Struct_type_date_python.pdf (1.41 Мб, 8 просмотров)
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 18.01.2020, 17:32   #3
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
По умолчанию

То есть это не возможно?
DoctorDeathDDrac вне форума Ответить с цитированием
Старый 18.01.2020, 18:03   #4
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

По ссылке ниже, не плохая статья о представлении чисел с плавающей точкой в памяти компьютера:
>>Что нужно знать про арифметику с плавающей запятой<<
Или вбейте в поиск "длинная арифметика" или "длинная арифметика в python".
Округлять нужно, т. к. например 1 / 3 приведет к бесконечному числу и соответственно басконечному деленю числа до переполнения памяти.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 18.01.2020, 19:45   #5
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
По умолчанию

То есть все таки можно вывести сколько хочешь, единственный лимит это память?
DoctorDeathDDrac вне форума Ответить с цитированием
Старый 18.01.2020, 20:11   #6
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Не только память. Есть ещё ограничения сред разработки.
Например Python автоматически округлит 1 / 3 таким образом:
Цитата:
>>> 1 / 3
0.3333333333333333
>>>
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 19.01.2020, 14:23   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Просто - никак. Конкретизируйте задачу, что именно Вам нужно считать со столь высокой точностью

Если речь идёт только корне из двух, вопрос можно решить переходом к целым числам, но корень надо будет писать свой:
Код:
>>> def sqrt(n):
...   u, v = 1, n//2
...   while abs(u-v) > 10:
...     u, v = v, (n // v + v) // 2
...   return v
... 
>>> sqrt(2*10**100)
141421356237309504880168872420969807856967187537694
>>> sqrt(2*10**200)
14142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727

Последний раз редактировалось Black Fregat; 19.01.2020 в 14:31.
Black Fregat вне форума Ответить с цитированием
Старый 25.01.2020, 20:03   #8
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
Хорошо

Классно, алгоритм работает, но почему-то только до 4000 символов, правда я не очень понял как именно он работает(
Меня не первый раз спрашивают о точности, но разве иррациональные числа никак по-другому не могут быть использованы?
Задачу я сформулировал внятно, что-то вроде "выводить определённое количество знаков после запятой", а зачем, это уже совсем другое дело
DoctorDeathDDrac вне форума Ответить с цитированием
Старый 25.01.2020, 20:10   #9
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
Смех

Black Fregat, если не сложно мог бы мне объяснить как работает твой код
DoctorDeathDDrac вне форума Ответить с цитированием
Старый 25.01.2020, 21:56   #10
DoctorDeathDDrac
Пользователь
 
Регистрация: 18.01.2020
Сообщений: 17
По умолчанию

а, он делает больше 4000, просто грузит дольше
DoctorDeathDDrac вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Python] Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна. Джина Ким Помощь студентам 0 18.05.2018 18:39
Delphi. Цикл While. Вывести целые числа от А до В, А вывести 1 раз, число А+1 вывести 2 раза и т.д. schibeki Помощь студентам 4 07.02.2014 09:17
Множества: Даны целые числа а1,.....,Аn. Вывести на печать сообщение - имеется ли в последовательности х повторяющиеся числа lialia Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 21:11
Вывести числа, из диапазона от n до m у которых, количество единичных разрядов в двоичном представлении числа нечетно sheff123 Помощь студентам 8 05.01.2012 15:35
Как числа в двоичном виде вывести в столбик по 4 числа? Equalizer Общие вопросы C/C++ 11 27.09.2009 14:15