Что больше чем двойной?
Есть ли собственный тип переменной 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 только некоторые процессоры позволят вам использовать его, хотя...
Повышение 1,53 или выше имеет мультиточность.
http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html