2008-11-02 2 views
21

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

+0

я обычно думаю поплавка как 4 и двойной, как 8, но вы имеете в виду приблизительное количество десятичных цифр, в то время как я имею в виду количество байт, используемых. – 2008-11-02 21:07:59

+16

Тройной! (bah dum, chh!) – Thanatos 2010-09-03 02:59:10

ответ

28

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

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

2

длинный двойной, но он, как правило, еще 15 мест точности.

3

Существуют также различные библиотеки bigfloat/bigint для C++, которые допускают произвольную математику точности. Там есть библиотека this на Microsoft Codeplex, но Googling найдет много других.

9

Вы можете использовать GNU MP. Его floating-point functions имеют неограниченный размер мантиссы и 32-битный или 64-разрядный (в зависимости от размера родного слова) показатель. Он также поставляется с C++ wrapper.

2

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

8

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

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

2

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

Смежные вопросы