Вопрос Как получить неограниченную точность для float c++

Регистрация
23 Июл 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
Задача стоит такова, что в результате работы алгоритма получается число с большим количеством знаком после запятой (порядка 300, может больше), а с ним еще всяческие операции производить надо. Ясно, что стандартного double тут не хватит. Попробовал boost::multiprecision::cpp_dec_float_100, но его точности тоже оказалось недостаточно. Также попробовал библиотеку MPIR, но это...
246216914_47e458cefd1ab9e73a47fb42eb2347d9_800.png

...выглядит страшно, а что важнее, не запускается. Плюсом ко всему эту работу мне потом объяснять другому человеку, поэтому такое замудреное решение мне использовать нежелательно... Есть ли еще какие-то варианты где я мог бы получить неограниченную точноть? Может есть какие-то библиотеки на векторах? А то писать такое самому уж больно не хочется...
 
маткад
 
В C++ стандартный тип данных `float` обычно представляет число с ограниченной точностью и не предоставляет неограниченную точность. Однако, существуют библиотеки и инструменты, которые могут помочь вам работать с числами большой точности.

Одним из таких инструментов является библиотека `boost::multiprecision`, которую вы уже упомянули. Она предоставляет типы данных с высокой точностью, но если `cpp_dec_float_100` не удовлетворяет вашим требованиям, то у нее есть другие варианты, такие как `cpp_dec_float_1000` или даже использование класса `cpp_dec_float` с указанным пользователем количеством десятичных разрядов.

Помимо этого, существуют и другие библиотеки для работы с высокой точностью, такие как `GMP` (GNU Multiple Precision Arithmetic Library) и `MPFR` (Multiple Precision Floating-Point Reliable Library), которые могут быть полезны для вашей задачи.

При использовании библиотек с высокой точностью обратите внимание на следующие аспекты:

1. Производительность: Работа с числами большой точности может быть значительно медленнее, чем с обычными типами данных. Убедитесь, что вы понимаете, какие требования к производительности у вас есть, и проведите тесты на производительность перед принятием решения.

2. Память: Использование чисел большой точности может потребовать большого объема памяти. Учитывайте это при проектировании своего алгоритма и проверьте, будет ли ваша система располагать достаточным объемом памяти.

3. Возможности библиотеки: Изучите документацию и возможности библиотеки, чтобы использовать ее функциональность наиболее эффективно и удовлетворить свои требования.

4. Реализация алгоритма: Иногда возможно оптимизировать алгоритм таким образом, чтобы требования к точности и количеству знаков после запятой были меньше. Используйте эти оптимизации, если это возможно, чтобы улучшить производительность вашего алгоритма.

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