¿Cuál es la precisión del doble largo en C ++?

¿Alguien sabe cómo averiguar la precisión del long double en una plataforma específica? Parece que pierdo precisión después de 17 dígitos decimales, que es lo mismo que cuando uso double . Esperaría obtener más, ya que el double está representado con 8 bytes en mi plataforma, mientras que el long double es de 12 bytes.

Antes de preguntar, esto es para Project Euler, entonces sí , necesito más de 17 dígitos. 🙂

EDITAR: Gracias por las respuestas rápidas. Acabo de confirmar que solo puedo obtener 18 dígitos decimales utilizando el long double en mi sistema.

Puede averiguarlo con std::numeric_limits :

 #include  // std::cout #include  // std::numeric_limits int main(){ std::cout < < std::numeric_limits::digits10 < < std::endl; } 

Puede usar . Específicamente:

 LDBL_DIG