Существует ли родной тип переменной С++, который "больше", чем двойной?
float - 7
double - 15 (конечно, в зависимости от компилятора)
Есть ли что-то большее, чем родное, или даже не родное?
Что больше, чем двойное?
Ответ 1
С++ имеет long double
, но нет никакой гарантии, что он будет более точным, чем простой double
. На платформе x86 обычно double
- 64 бита, а long double
- 64 или 80 бит (что дает вам 19 значащих цифр, если я правильно помню).
Ваш пробег может отличаться, особенно если вы не на x86.
Ответ 2
Вы можете использовать GNU MP. Его функции с плавающей запятой имеют неограниченный размер мантиссы и 32-битного или 64-битного (в зависимости от размера исходного слова). Он также поставляется с С++-оболочкой.
Ответ 3
Длинный двойник обычно использует только 10 байт, но из-за выравнивания на самом деле может занимать 12 или 16 (в зависимости от компилятора и параметров) байтов в структуре.
10-байтовый длинный двойник обеспечивает 64-битную мантиссу; это очень удобно, если вы хотите хранить 64-битные целые числа в плавающей запятой без потери точности.
Ответ 4
Существуют также различные библиотеки bigfloat/bigint для С++, которые позволяют произвольную математику точности. Там эта библиотека на Microsoft Codeplex, но в Google будет много других.
Ответ 5
длинный двойной, но он, как правило, также остается 15 точками точности.
Ответ 6
С++ имеет длинный двойной, но он все еще довольно ограничен. Доброе время попробуйте библиотеку GNU gmp. Вы можете настроить номера как можно больше, и это довольно забавно и хакерски, когда вы используете gmp_add вместо обычного+. Я уверен, что там есть обертка С++.
Ответ 7
длинный длинный двойной только некоторый cpus позволит вам использовать его, хотя...
Ответ 8
Ускорение 1.53 или выше имеет многозначность.
http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html