Как мне представить огромные числа с плавающей точкой в ​​Visual C ++ - PullRequest
3 голосов
/ 17 февраля 2011

double ld = 0.299999999999999990009;

Получает усеченный до 0.29999999999999999

Как получить большую точность от типа float?

Есть ли класс, который переносит большее значение?

Ответы [ 4 ]

7 голосов
/ 17 февраля 2011

Библиотека Gnu MP , очевидно, поддерживает произвольной арифметики с плавающей точкой. Я бы рекомендовал попробовать это, поскольку GMP - одна из самых быстрых арифметических библиотек произвольного размера общего назначения. Он очень стабилен, имеет всесторонние интерфейсы C, а также оболочки C ++ и двоичные файлы, скомпилированные для многих компиляторов.

Библиотека GNU MPFR основана на GMP и добавляет огромное количество специальных функций, работающих с произвольной точностью.

3 голосов
/ 17 февраля 2011

Существует long double, но в MSVS , например, это синоним double (для платформы).

И вы также можете захотетьпопробуйте какую-нибудь высокоточную математическую библиотеку, например HPA.

1 голос
/ 17 февраля 2011

Если вам действительно нужно больше точности, вам понадобится библиотека с множественной точностью.Вокруг есть бесплатные библиотеки, такие как GMP (программное обеспечение LGPL)

0 голосов
/ 17 февраля 2011

сам дубль на самом деле достаточно большой (1×10^−37 → 1×10^37), а также есть длинный двойной и длинный плавающий

Я думаю, что это усекается, потому что вы не установили точность std :: cout

#include <iomanip>
float yourfloat;
cout << fixed << setprecision(lengthoftheprecision) << yourfloat;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...