Ir para conteúdo
Fórum Script Brasil
  • 0

Atof com notação científica (exponencial)


Gutovookrj

Pergunta

Olá novamente.

Estou com um problema no atof...

Eu tenho uma variável do tipo string que tem o seguinte valor:

"IC=-2.87604039957841E-1"

Isso é a mesma coisa que -2.876 x 10^(-1), que seria -0.2876, certo?

O problema é que quando eu faço o atof(&ic[3]), ele me retorna um float de valor -2.876, 10 vezes maior do que o correto, porque parece que ele não enxerga o E-1 como 10 elevado a -1.

criei ic como

char ic[30];

Alguém sabe a solução disso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Já solucionei o problema, mas de qualquer forma, obrigado :)

Acho que o problema tava no compilador (devc++ rodando pelo windows), ou eu dei bobeira em alguma parte do algoritmo que não lembro, mas não importa mais :P eu parei de armazenar a variável em string. Dessa vez, coloquei em float mesmo e funcionou.

antes, estava assim:

fscanf(arquivo,"%10s%10s%lg%30s%*[^\n]",na,nb,&netlist[ne].valor,netlist[ne].var1);
E em algum outro lugar do código eu fazia:
IC1 = atof(&netlist[ne].var1[3]);
agora, está assim:
fscanf(arquivo,"%10s%10s%lg IC=%lg%*[^\n]",na,nb,&netlist[ne].valor,&netlist[ne].ic);

Tá funcionando pra qualquer arquivo, e tá bem melhor que a leitura de string, pois se não tiver nada ali no arquivo, ele já atribui 0 à ic.

Da forma antiga, obrigava o usuário a definir IC no arquivo, mesmo que fosse pra colocar IC=0, senão a string pegava o que estivesse na linha seguinte, e a leitura do arquivo ficava toda errada.

De qualquer forma, o programa já tá pronto e funcionando perfeitamente =]

É um programa que analisa circuitos elétricos, pegando uma netlist (arquivo com descrição do circuito, com elementos e os nós onde eles estão ligados), e calcula tensões e correntes no circuito inteiro, usando polinômios vindos da Transformada de Laplace (por isso a dúvida do outro tópico). Esse IC seriam condições iniciais em capacitores ou indutores e tal.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...