Что больше чем двойной?

Есть ли собственный тип переменной C++, который "больше", чем double?
float 7
double это 15 (конечно, в зависимости от компилятора)
Есть что-то большее, что родное или даже не родное?

8 ответов

Решение

C++ имеет long double, но нет никакой гарантии, что он точнее простого double, На платформе x86, как правило, double составляет 64 бита, и long double или 64 или 80 бит (что дает вам 19 значащих цифр, если я правильно помню).

Ваш пробег может отличаться, особенно если вы не на x86.

Длинный двойной тип обычно использует только 10 байтов, но из-за выравнивания может фактически занимать 12 или 16 (в зависимости от компилятора и опций) байтов в структуре.

Двойной 10-байтовый код обеспечивает 64-битную мантиссу; это очень удобно, когда вы хотите хранить 64-битные целые числа с плавающей запятой без потери точности.

Вы можете использовать GNU MP. Его функции с плавающей запятой имеют неограниченную мантиссу и 32-битную или 64-битную (в зависимости от собственного размера слова) экспоненту. Он также поставляется с оболочкой C++.

C++ имеет длинный дубль, но он все еще довольно ограничен. Для хорошего времени попробуйте библиотеку GNU gmp. Вы можете устанавливать числа настолько большими, насколько вам нравится, и это довольно забавно и весело, когда вы используете gmp_add вместо обычного +. Я уверен, что где-то есть оболочка C++.

Есть также несколько различных библиотек bigfloat/bigint для C++, которые допускают математические вычисления произвольной точности. В Microsoft Codeplex есть эта библиотека, но Google найдет вам множество других.

long long double только некоторые процессоры позволят вам использовать его, хотя...

long double, но обычно это тоже 15 мест точности.

Повышение 1,53 или выше имеет мультиточность.

http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html

Другие вопросы по тегам