Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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 позволит вам использовать его, хотя...