|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Калькулятор с бесконечной точностью |
|
*Теория* | Калькулятор с бесконечной точностью
|
Пользователь Сообщения: 74 |
Профиль | Сайт | Отправить PM | Цитировать Приветствую всех. Подкиньте идею, как сделать калькулятор с бесконечной точностью, где можно умножать, складывать и т.д огромные числя и получать бесконечную точность.
|
|
------- Отправлено: 18:28, 15-10-2005 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Хм, я не до конца понимаю термин "бесконечная точность", я реально достигал точности е-097 (е+097), потом просто идет переполнение, как можно достичь бесконечной точночти на машине с ограниченной разрядной сеткой я не понимаю...., хотя может я чего то не знаю, очень хотел бы услышать еще чьи-нибудь коментарии.
|
Отправлено: 20:05, 15-10-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать Ну например, у меня есть два 96-ти битных числа. Как их сложить???
|
------- Отправлено: 21:11, 15-10-2005 | #3 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать побитово
Основная проблема, как мне видится, не арифметические действия с такими числами, а вывод на экран ответа в системе счисления, основание которой отлично от степени двойки. |
Последний раз редактировалось Savant, 15-10-2005 в 22:01. Отправлено: 21:12, 15-10-2005 | #4 |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать Ну хоть чт0-то подскажите. Я знаю, что есть какая-то функция тип ads в ассемблере.
Как мне понимается, это будет аналог сложению в столбик-по крайней мере алгоритм. Или же числа будут обрабатываться по частям... а может использовать динамический массив? хоть что-нибудь подскажите |
|
------- Отправлено: 22:11, 15-10-2005 | #5 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Если не трогать пока ассемблер, то для Паскаля (а Вам какой язык ближе?) (сложение беззнаковых любого размера):
const k = 12; {12*8=96} bit: array[0..7] of Byte = (1,2,4,8,16,32,64,128); var a, b, c: array[0 .. k - 1] of Byte; i, j: Byte; ost: Boolean; a_bit, b_bit: Boolean; ... ost := False; for i := 0 to k - 1 do begin c[i] := 0; for j := 0 to 7 do begin a_bit := a[i] and bit[j] > 0; b_bit := b[i] and bit[j] > 0; case Ord(a_bit) + Ord(b_bit) + Ord(ost) of {0: } 1: begin c[i] := c[i] + bit[j]; ost := False end; 2: ost := True; 3: begin c[i] := c[i] + bit[j] {; ost := True} end; end; end; end; { если здесь ost = true , то у нас переполнение } end. |
Отправлено: 23:03, 15-10-2005 | #6 |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо. Но, если честно, не очень понятно, что здесь реализовано, хотелось бы все-таки понять.
Единственное, что понял-это a,b числа, с-результат. Поясните, если не трудно. Да, и потом как работать с этим кодом, как задать значения чисел и проверить результат. |
------- Отправлено: 23:31, 15-10-2005 | #7 |
Пользователь Сообщения: 74
|
Профиль | Сайт | Отправить PM | Цитировать Я так понял, если a[i] и bit[j] > 0, то a_bit=1, иначе a_bit =0 ?????????
|
------- Отправлено: 00:59, 16-10-2005 | #8 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Обычно это называют длинной арифметикой иделают её по основанию 10 (как вариант - 10^n), а не 2. Потому что входные/выходные данные обычно в десятичном виде, а значаит операции ввода/вывода будет делать проще. Есть много информации в сети об этом. Из легко доступного и понятного могу посоветовать книгу Окулова "Программирование в алгоритмах". Ну или вездесущий Яндекс поможет.
|
------- Отправлено: 18:58, 16-10-2005 | #9 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать В институте была задачка, посчитать средствами Паскаля 70! с точностью до знака.
Пришлось учить машину умножать столбиком. Числа хранили в строковом представлении |
------- Отправлено: 09:00, 17-10-2005 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Калькулятор трупа | Greyman | Юмор | 78 | 04-06-2012 18:52 | |
C/C++ - Калькулятор на С++ | PRaetorian | Программирование и базы данных | 23 | 31-05-2011 12:26 | |
C/C++ - Калькулятор | hhh8486 | Программирование и базы данных | 5 | 11-04-2011 01:18 | |
Калькулятор WinStyle | prokazzza | Проект WinStyle | 47 | 19-02-2011 22:45 | |
Любой язык - [решено] Системное время с точностью до секунд из bat | BugSoft | Скриптовые языки администрирования Windows | 1 | 15-12-2008 16:55 |
|