[Resolvido] Ajuda pascal - Casas Decimais - Pascal/Delphi - Clube do Hardware
[Resolvido] Ajuda pascal - Casas Decimais
Por matheuscosta3, 25 de agosto de 2013 em Pascal/Delphi
matheuscosta3 0
Ipatinga, Minas Gerais.
Ola, minha duvida é a seguinte: Estou criando alguns programas, nos quais preciso obter o valor do erro de um calculo.
Da seguinte forma: Eu crio um programa para informar o valor de uma função, a partir desse momento informo também o numero aproximado do resultado dessa função, com duas casas decimais. Até aqui tudo ok.
O problema é que nao estou conseguindo calcular o erro, que seria o resultado com todas as casas decimais, menos o valor aproximado. O Pascal não esta reconhecendo a forma como estou tentando.
O que ja fiz: Tentei efetuar uma subtração comum, da seguinte maneira: ( (Função) - (funçao:0:2) ) . E também tentei atribuir a uma variável (a) qualquer o valor da funçao:0:2, para depois efetuar a subtração como: (Função - a).
O erro que o programa me informa é sempre o mesmo: " ':' não esperado. ".
Lembrando que consigo mostrar na tela o valor da funçao:0:2. So não consigo efetuar a subtração considerando apenas duas casa decimais da função.
Olá, experimente converter o funçao:0:2 para string e reconverter o resultado para real novamente...
Vide comandos: STR() e VAL() .
matheuscosta3
Acho que não entendi muito bem. A minha "funçao:0:2" é sempre a mesma "funçao". Se eu declarar ela como string vai me informar incompatibilidade de valores.
Acho que não entendi muito bem.
Olá, acho que comentei certo, mas me expressei mal..
Então, você pesquisou sobre os comandos Val() e Str()? (senão, pesquise-os, você vai entender melhor)
Vamos lá, se você está utilizando a formatação :x:y, significa que a variável é do tipo real (ou similar), correto? (já que tem casas decimais)
E como já foi verificado, efetuar a conta utilizando essa formatação diretamente não está funcionando... A minha sugestão é você converter o valor dessa variável para string, e depois converter o resultado para real novamente..., ou seja, ao converter você vai passar como parâmetro a variável funcao já com a formatação, utilizando funcao:0:2. Você terá uma string com os números no formato de duas casas decimais (mas será uma string, e não um número). Ao voltar para real, o valor só terá duas casas decimais.. (as outras casas decimais ficaram com 000000...).
O :x:y (ex.: valor:0:3), serve simplesmente para dizer que "retorne o valor que está na variável com X casas reservadas a esquerda, e Y casas decimais", mas o número original continuará lá. Ao converter utilizado a formatação, o resultado só terá as Y casas decimais de fato... quando retornar para real, o valor passará a ter somente esse valor com duas casas decimais.
VALOR ORIGINAL EM REAL= 193.324276844
CONVERTIDO PARA STRING = 193.32
CONVERTIDO PARA REAL = 193.32
A minha "funçao:0:2" é sempre a mesma "funçao". Se eu declarar ela como string vai me informar incompatibilidade de valores
Acho que você confundiu "converter" com "mudar de tipo". O tipo dela não vai ser alterada, você simplesmente vai pegar o "valor dela" e "converter para outro tipo de dado"...
Obs2.: Essa no momento é a única maneira que sei para "remover o restante das casas decimais"... se alguém souber outra forma, fico no aguardo também...
Como se passou mais de uma semana e não houve respostas, vou postar um exemplo... quem sabe pode ser útil para outros também..