Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/109: Рейтинг темы: голосов - 109, средняя оценка - 4.71
 Аватар для YuliLa
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71

Вещественные числа с плавающей точкой, точность вычислений

07.06.2012, 12:31. Показов 21481. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю над проектом, требующим большую точность вычисления вещественных чисел.
Решила использовать long double в надежде получить точность побольше.
Столкнулась с тем, что C++ Builder просто отказывается давать желаемую точность.
Точность необходима до 10^20. То есть до 20 числа после запятой.
Подскажите пожалуйста как решить данную проблему.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2012, 12:31
Ответы с готовыми решениями:

Точность числа с плавающей точкой
У типа float числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр. Внимание, вопрос!...

Максимальная точность для чисел с плавающей точкой
Суть поставленной задачи: дан вектор от 10_000 до 100_000 элементов, нужно проходить по вектору, брать два первых значения которые должны...

Представить вещественные числа в четырёхбайтовой ячейке памяти в формате с плавающей точкой
Пожалуйста помогите Представить вещественные числа в четырёхбайтовой ячейке памяти в формате с плавающей точкой. a) 0,5; б) 25,12; в)...

70
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 16:30
Студворк — интернет-сервис помощи студентам
Случайно наткнулся...читаю ПРОграммист №12 (март)2011 "АРИФМЕТИКА ДЛИННЫХ ЧИСЕЛ"

Добавлено через 20 минут
https://www.cyberforum.ru/post2824768.html
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 17:07
Чота у меня под линуксом .zip не открывается. Но подозреваю, что ТС'а это не очень-то и устроит, ибо навряд ли в той библиотеке есть логарифм
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 17:38
логарифм
Ну возможно логарифм и не понадобится... все зависит от чисел..

Просто как не пытался библиотеку gmp для VC++ под билдер не удалось прикрутить...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 18:22
Цитата Сообщение от Avazart Посмотреть сообщение
Ну возможно логарифм и не понадобится...
Дык у ТС'а это было первоначальным описанием проблемы. С другой стороны может и вправду можно сначала вычесть два числа через библиотеку, а получившуюся разницу привести к long double и вычесть логарифм. Но это какая-то кривая технология

Цитата Сообщение от Avazart Посмотреть сообщение
Просто как не пытался библиотеку gmp для VC++ под билдер не удалось прикрутить...
Ну тут я вряд ли что-то посоветую. Я не понимаю, как строить библиотеки под винду и как их потом использовать. Когда я к билдеру прикручивал lua, то вместо онанизма с подключением библиотеки мне намного проще показалось включить исходники lua целиком в свой проект и не мучиться
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 18:52
включить исходники lua целиком в свой проект и не мучиться
Но исходники пришлось подправлять ручками наверное?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 19:54
Цитата Сообщение от Avazart Посмотреть сообщение
Но исходники пришлось подправлять ручками наверное?
У lua всё было хорошо. Исправление вылилось только в то, что отключил часть файлов как не нужных для моего проекта. И по-моему что-то там поправил по части предупреждений, т.к. борландовский компилятор немного более болтливый, чем gcc
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 20:02
Т.е нужно найти исходники с h,cpp-файлами и просто включать в проект?
Или найти исходники и скомпилить их и потом "только-как-то" подключать?

Просто как я понял gmp вообще под Си + Asm поэтому у меня сомнение что это возможно...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 20:53
Всё зависит от конкретных исходников. Lua скомпилиось просто. Как там у gmp - хз. Возможно, что лучше сначала собрать их под mingw, затем взять все файлы, получаемые в процессе сборки (как минимум config.h) и всё это скопом утащить в виндовый компилятор. Если там gnu'шные ассемблерные вставки, то кроме gcc оно уже ничем не соберётся и придётся в борланду или vc прикручивать библиотеку в бинарном виде
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 21:27
прикручивать библиотеку в бинарном виде
Что означает в бинарном виде??
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 22:01
Цитата Сообщение от Avazart Посмотреть сообщение
Что означает в бинарном виде??
Скомпилировать под mingw (т.к. библиотека gnu'шная и скорее всего рассчитана на gcc). В итоге ты получишь библиотеку в бинарном виде (т.е. собранные кода в виде файла *.lib, *.dll или чего там под виндой).
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2012, 22:17
т.е. собранные кода в виде файла *.lib, *.dll
Ну так уже есть собраные либы под mingw...

Но проблема в том что файлы .lib разные бывают

1.- OMF (object module format) подходят для Builder-a
2.- COFF (common object file format) подходят для VS

Но поидее можно переконверчивать - но у меня не получилось это сделать
Хотя правда я юзал зборку под VS
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2012, 22:27
Ну это я не знаю. Мне эти виндузовые прибабахи как-то непонятны
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.06.2012, 18:47
Ну это я не знаю. Мне эти виндузовые прибабахи как-то непонятны
Ну я вроде разобрался более или менее с этими прибабахами...удалось использовать gmp в Builder-e.

Поэтому если для YuliLa тема еще актуальна, то можно подумать о том как можно использовать gmp для решения её задачи...
1
 Аватар для YuliLa
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
11.06.2012, 20:39  [ТС]
Использование gmp, хм, почему бы и нет...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.06.2012, 21:38
Тогда приведите код ф-ции Prognoz()
0
 Аватар для YuliLa
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
11.06.2012, 22:43  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Тогда приведите код ф-ции Prognoz()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
///////////////////////////////////////////////////////////
//////П Р О Г Н О З    З Н А Ч Е Н И Й/////////////////////
///////////////////////////////////////////////////////////
double Prognoz(int kol, double pr[Nin+Nznach], int element )
{
 long  double prognozing[Nprognoz+Nin];
     /*   kol - величина скользящего окна
          pr[Nin+Nznach] - вектор начальных данных
          element - элемент из начального вектора, 
                        с которого начинается прогнозирование */
 
 //заполним значениями из pr[Nin+Nznach] промежуточный массив (размером скользящего окна) 
 for (int g=0; g<kol; g++)
     prognozing[g]=pr[Nin-kol+element+g];
 //прогнозирование kol значений
 for (int k=0;k<1;k++)
 {
     sumout=0;
     for (int i=0;i<Nhide;i++)
     {
         sum[i]=0;
         for (j=0;j<kol;j++)
             sum[i]=sum[i]+wki[j][i]*prognozing[j+k];
         sum[i]=fsyg(sum[i]-Ti[i]);
         sumout=sumout+sum[i]*wij[i];
     }
 return (sumout-Tj[0]);
 }
}
/*-------------------------------------------------*/
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.06.2012, 23:44
fsyg() что такое?

Кстати странно что у вас везде double а не long double как вы говорили...
0
 Аватар для YuliLa
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
12.06.2012, 00:20  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
fsyg() что такое?

Кстати странно что у вас везде double а не long double как вы говорили...
А какая разница, если все равно не работает =)

fsyg () - сигмоидная функция активации.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.06.2012, 00:24
fsyg ()
ну и где ее взять?

Нужно просто определить где именно падает точность...
0
 Аватар для YuliLa
4 / 4 / 0
Регистрация: 15.10.2010
Сообщений: 71
12.06.2012, 00:33  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
ну и где ее взять?

Нужно просто определить где именно падает точность...
Отслеживала потерю точности с помощью пошагового выполнения. Точности нет после выполнения функции Prognoz (). Будь числа double или long double - результат один и тот же. Что я заметила, что если выполнять все в VS, то в Watch данные числа отображаются одинаково, но разность имеет значение 1*10^-17 в Builder'e же эта разность сразу равна 0. Выходит, что проблема именно в компиляторе билдера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2012, 00:33

В текстовом файле записаны вещественные числа с плавающей точкой. Преобразовать файл, заменив каждое число, округленным
Задача: В текстовом файле записаны вещественные числа с плавающей точкой. Преобразовать файл, заменив каждое число, округленным до десятых...

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

Точность вычислений в double (Обрезание числа)
Здравствуйте! Дело в том, что мне необходимо выводить большие числа с большим количеством знаков после запятой. Однако и double и float...

Числа с плавающей точкой
Здравствуйте, создаю я, значит, батник. И тут столкнулся с такое проблемой: при присвоении переменной числа с плавающей точкой вылетает...

Числа с плавающей точкой
Как отделить целую часть и дробную? Например имеем число 12.54 число 12 должно бить записано в textbox1 а число 54 в textbox2.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru