Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Dreigon Fenriz

Erro em soma de valores?

Mensagens Recomendadas

Dreigon Fenriz

Ola esta dando um problema que não estou conseguindo resolver:

Estou tentando somar dois valores um inteiro com real,mas não esta saindo o resultado corretamente

tipo o valor 10 esta em uma variável real e ai tenho que somar um valor inteiro 1 e então o resultado sai 1,10.... quando eu queria que saísse 11,00....

Código

RESULTADO:=10; //é uma variavel real
NT:=1; //é uma variavel inteira
RESULTADO:=RESULTADO+NT;

já tente colocar NT como real mas mesmo assim o valor não sai corretamente

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

o resultado sai 1,10....

As reticências são importantes... Mostra o valor completo que aparece!

Possivelmente o que te aparece é 1.10000000000000E+001, que é notação científica para o valor 11.

Se de todo as casas decimais não te importam, na hora de mostrar limita as casas decimais assim:

RESULTADO:=10; //é uma variavel real
NT:=1; //é uma variavel inteira
RESULTADO:=RESULTADO+NT;

writeln(Resultado:2:0);  // O :3:0 indica que o número terá pelo menos 2 caracteres, com 0 casas decimais

Nota que se não for para mostrar (se for para usar noutros cálculos), não precisas disto, pois o compilador entende a notação cientifica.

Editado por nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

mas eu quero que o resultado saia 11.0000000000000E+001

O que tu queres não é muito relevante para as leis da matemática... :)

Queiras ou não, 11.0000000000000E+001 é 110, e não 11. ;)

Editado por nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

mas como pego de 1.10000000000000E+001 somente 11

Para escrever no ecrã? Ou para quê?


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

Como eu te dizia em cima, se é para mais cálculos, não tens de fazer nada, basta usar.

O compilador sabe que aquele valor é 11.

Só tens de te preocupar com isso na hora de mostrar ao utilizador, ou se for para converter para outro tipo de variável (string, integer, etc).

Editado por nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

aqui não funcionou,estou utilizando dev-pascal,

Não importa onde, tem de funcionar! :)

Mostra o código que te está a falhar!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

assim,agora funcionou,mas o que eu queria nao era o 11 mostrado na tela mas que o valor da variavel fosse 11

É mesmo essa parte que ainda não entendeste, e por isso te está a causar confusão.

As variáveis real são guardadas pelo compilador em formato de notação científica.

Independentemente do formato, o valor é o mesmo.

O valor que lá tens é 11, apenas mostrado de maneira diferente, que é a que o compilador considera mais eficaz.

Ou seja, se queres na variável o valor 11, já o tens.

Se o queres lá o valor 11 mas no formato decimal, tens de usar variáveis integer, e não real.

Editado por nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.