Ir ao conteúdo

Tem como converter Integer para Real ou vice versa?


JosimarBG2009

Posts recomendados

Postado

Bem, estou com um problema na seguinte espressão:


program Int_To_Real_To_Int;

var Inteiro:integer;
NumReal:real;

begin

writeln;
writeln(' Digite um númer Real');
writeln;

Inteiro:=((NumReal * [COLOR="blue"]valorInt[/COLOR]) / [COLOR="blue"]valorReal[/COLOR]);

writeln(' Resultado ',Inteiro);
[COLOR="DarkGreen"]
{
[COLOR="Blue"]ValorInt[/COLOR] pode ser qualquer número inteiro,
e [COLOR="blue"]ValorReal[/COLOR] pode ser qualquer número real.

Ex.: ValorInt => 90
ValorReal => 2.65
}
[/COLOR]

end.

Erro semantico na linha Tal...

Atribuição com tipos de dados incompatíveis para a variável "Inteiro".

Postado

Possivel é, mas....

Para passar de inteiro a real é fácil. É só atribuir um valor inteiro a uma variável real. Exemplo:


program Int_To_Real_To_Int;

var Inteiro:integer;
NumReal:real;

begin
Inteiro:= 9;
NumReal:= Inteiro;
end.

Para passar de real a inteiro, você vai ter que arredondar primeiro o numero real e só depois atribuir esse valor a uma variavel do tipo integer.

É o que eu penso. Não sei se há outra solução. Se há, de momento, não me lembro.

Visitante: polonio
 
Postado

Bom primeiramente uma variavel do tipo inteira não pode receber o

resultado de uma divisão pois pode ser um resultado quebrado.

Pra converter de real para integer e vice versa:

VarReal := InttoDouble(VarInteger); //De Integer para real
VarInteger := DoubletoInt(VarReal); //De Real para integer

Também existe outras conversões como se fosse converter um

valor integer para um string:

VarString := InttoStr(VarInteger);

Seu código escrito corretamente ficaria assim:


program Int_To_Real_To_Int;

var Inteiro:integer;
NumReal:real;

begin

writeln;
writeln(' Digite um númer Real');
writeln;

[COLOR="SeaGreen"]{
Dessa parte não tenho absoluta certeza que é desse jeito porque to
no serviço e não tenho como testar aqui mas essa é a lógica
}[/COLOR]

Inteiro:= Round(((NumReal * valorInt) / valorReal));

[COLOR="#2e8b57"]{ Ou:
Inteiro:= DoubleToInt(((NumReal * valorInt) / valorReal));
}[/COLOR]

writeln(' Resultado ',Inteiro);


end.

A diferença de usar round e a conversão é que round vai

arredondar(Ah é? :eek: ) para mais ou para menos e a conversão

simplesmente vai pegar o numero que está à frente da virgula.

Postado

:) Ok... Brigado a todos que ajudaram. Quanto a isso não restam mais dúvidas.

Mas tem mais um probleminha... Como obter o resto de uma divisão de dois números reais ou de ponto flutuante??? :confused:

Postado

1. Acho que você quis dizer resto da divisão de dois números inteiros.

Use mod:

9 mod 4 retorna 1

2. Para obter a parte inteira de uma divisão, use div:

13 div 2 retorna 6

3. Use a formatação de números para a quantidade de casas decimais:

Inteiro (analogamente, usa-se com o string):

k:n retorna o número k ocupando n casas, preenchendo com espaços.

52:3 retorna □52 {com o espaço antes}

8575:3 retorna 8575 {não é possível ocupar menos casas}

Real:

k:m:n retorna o número k ocupando m casas com n casas após o ponto.

5.64:4:1 retorna □5.6 {4 casas da tela incluindo o ponto, 1 casa decimal}

2.4:9:3 retorna □□□□2.400

Postado

:)

É de números reais mesmo... É que eu tô precisando do resto da divisão entre dois ou mais números reais, para uma formula q estou fazendo aqui...

Ou seja, eu preciso da parte inteira de um número real para ubter o resto de uma divisão usando o mod.

Mas o comando mod não pode ser usado com números reais.

Postado

Para obter o resto da divisão ou a parte decimal? Se é a parte decimal é fácil, veja este exemplo:


program resto;
uses crt;

var v1, v2, v3: real;
k: word;
begin
clrscr;
write('Digite o 1r real: ');
readln(v1);
write('Digite o 2r real: ');
readln(v2);
v3:= v1/v2;
writeln(v3);
readln;
v1:= v3-int(v3); {parte decimal da divisao}
writeln(v1:8:4);
readln;
end.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...