Pergunta

Recentemente, às vezes (raramente) quando exportar dados de nossa aplicação, o log de exportação contém valores float que se parecem com "-1. # J". Eu não tenho sido capaz de reproduzi-lo, então eu não sei o que os olhares flutuar como em binário, ou como Visual Studio exibe-lo.

Eu tentei olhar para o código-fonte para printf, mas não encontrou nada (não 100% certo que eu olhei para a versão correta embora ...).

Eu tentei googling mas google joga fora qualquer #, parece. E eu não posso encontrar listas de erros flutuador.

Foi útil?

Solução

Ele pode ser infinito negativo ou NaN (não um número). Devido à formatação do printf campo não faz distinção entre eles.

Eu tentei o seguinte código no Visual Studio 2008:

double a = 0.0;
printf("%.3g\n", 1.0 / a);  // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a);    //  NaN

que resulta na seguinte saída:

1.#J
-1.#J
-1.#J

remover a 0,3 especificador de formatação dá:

1.#INF
-1.#INF
-1.#IND

então é claro 0/0 dá NaN e -1/0 dá infinito negativo (NaN, inf e + inf são a única "errônea" números de ponto flutuante, se bem me lembro)

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