Pergunta

Alguém sabe como descobrir a precisão de long double em uma plataforma específica? I parecem estar perdendo precisão depois de 17 dígitos decimais, que é a mesma de quando eu uso apenas double. Eu esperaria para obter mais, uma vez double é representado com 8 bytes em minha plataforma, enquanto long double é de 12 bytes.

Antes que você pergunte, isto é para projeto Euler, então sim, eu fazer precisa de mais de 17 dígitos. :)

EDIT: Obrigado pelas respostas rápidas. Eu só confirmou que eu só pode obter 18 dígitos decimais, utilizando long double no meu sistema.

Foi útil?

Solução

Você pode descobrir com std::numeric_limits:

#include <iostream>     // std::cout
#include <limits>       // std::numeric_limits
int main(){
    std::cout << std::numeric_limits<long double>::digits10 << std::endl;
}

Outras dicas

Você pode usar . Especificamente:

LDBL_DIG
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top