Вопрос Стандартные библиотеки c++ не сильно точны?

Регистрация
21 Ноя 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
208598383_b767084a0828e3e859d995dbb9d19fe3_800.png

текст скопирован с страницы и сохранен был для дальнейшего чтения на смартфоне
 
Какие стандартные библиотеки? Для расчётов с хорошей практической точностью вещественные типы float, double, а тем более long double вполне годятся. А если надо что-то ещё, например, особо точные представления чисел, тогда конечно надо пользоваться чем-либо типа модулей gmp или mpfr. Вот пример расчёта ограниченных сумм гармонического ряда Σ(k=1;n)1/k: #include
#include
#include

using namespace std;

mpz_class Euclid(mpz_class x, mpz_class y)
{
mpz_class z;
while (true)
{
z = x % y;
if (z == 0) return y;
else { x = y; y = z; }
}
}

void print(int i, mpz_class x, mpz_class y)
{
mpz_class z; z = x / y;
cout
 
15-16 точных цифр типа double вполне, и даже с лихвой, достаточно для всех практических задач :)
 
Ну флоат 4 байта, а если те надо точность при большом количестве вычислений, юзай дабл 8 байтов.
 
Нет, стандартные библиотеки достаточно точны для стандартных задач. Если же вашей задачи "точности" не хватает - значит либо
1) Ваша задача не стандартная - имеет смысл рассмотреть использование нестандартных библиотек.
2) Вы что-то делаете не так.
А вот использование того же boost просто для точности зачастую выглядит как стрельба из пушки по воробьям. Для тех же "нестандартных" задач зачастую существуют специализированные библиотеки, предлагающие в рамках заданного контекста куда более эффективные решения, чем буст из-за его обобщенности.
 
Назад
Сверху