Alguem poderia me dizer por que?

4 respostas
G

Ola,

Alguem poderia me dizer por que o calculo esta estranho nesse codigo?

public class Trabtres {

public static void main(String args[]) {
	double terreno,valorterreno, iptu, totaldesconto,valoriptu;
	char esquina, comercial, limpo;
	System.out.println("Informe o tamanho do terreno");
	terreno = Keyboard.readDouble();
	System.out.println("Seu terreno é de esquina? Se sim coloque S, se não coloque N");
	esquina = Keyboard.readChar();
	System.out.println("Seu terreno é em local comercial? Se sim coloque S, se não coloque N");
	comercial = Keyboard.readChar();
	System.out.println("Seu terreno está limpo? Se sim coloque S, se não coloque N");
	limpo = Keyboard.readChar();
	
	valoriptu = 1.10;
	
	if (esquina=='s'){
		valoriptu = valoriptu+0.20;
		if (comercial=='s'){
			valoriptu = valoriptu+0.10;
			System.out.println(valoriptu);
			if (limpo=='s'){
				valorterreno = terreno*valoriptu;
				totaldesconto = (valorterreno*25)/100;
				iptu = valorterreno-totaldesconto;
				System.out.println("Seu IPTU é: "+iptu);  				   				
			}
			else {
				valorterreno = terreno*valoriptu;
				System.out.println("Seu IPTU é: "+valorterreno);
			}
		}
		else {
			if (limpo=='s'){
				valorterreno = terreno*valoriptu;
				totaldesconto = (valorterreno*25)/100;
				iptu = valorterreno-totaldesconto;
				System.out.println("Seu IPTU é: "+iptu);   				   				
			}
			else {
				valorterreno = terreno*valoriptu;
				System.out.println("Seu IPTU é: "+valorterreno);
			}
	}
	
}
else {
	if (comercial=='s'){
			valoriptu = valoriptu+0.10;
			System.out.println(valoriptu); 
			if (limpo=='s'){
				valorterreno = terreno*valoriptu;
				totaldesconto = (valorterreno*25)/100;
				iptu = valorterreno-totaldesconto;
				System.out.println("Seu IPTU é: "+iptu); 				   				
			}
			else {
				valorterreno = terreno*valoriptu;
				System.out.println("Seu IPTU é: "+valorterreno);
			}
		}
		else {
			if (limpo=='s'){
				valorterreno = terreno*valoriptu;
				totaldesconto = (valorterreno*25)/100;
				iptu = valorterreno-totaldesconto;
				System.out.println("Seu IPTU é: "+iptu);   				   				
			}
			else {
				valorterreno = terreno*valoriptu;
				System.out.println("Seu IPTU é: "+valorterreno);
			}
	}
	
}

}
}

eu to usando o JCreator, uso ele porque é o que está usando na faculdade.
o que acontece nesse codigo é que quando eu calculo a variavel: valoriptu = valoriptu + 0.10;
ele coloca um monte de dero e um 1 no final.
exemplo de resultado

Informe o tamanho do terreno
20
Seu terreno é de esquina? Se sim coloque S, se não coloque N
s
Seu terreno é em local comercial? Se sim coloque S, se não coloque N
s
Seu terreno está limpo? Se sim coloque S, se não coloque N
n
1.4000000000000001
Seu IPTU é: 28.000000000000004

Process completed.

mas c eu trocar esse valor para 0.20 ele calcula normal.

alguem sabe me dizer o que pode ser?

valeu!

4 Respostas

Rafael_Marques1
gustavopnbr:
Ola,

Alguem poderia me dizer por que o calculo esta estranho nesse codigo?

public class Trabtres {

    public static void main(String args[]) {
    	double terreno,valorterreno, iptu, totaldesconto,valoriptu;
    	char esquina, comercial, limpo;
    	System.out.println("Informe o tamanho do terreno");
    	terreno = Keyboard.readDouble();
    	System.out.println("Seu terreno é de esquina? Se sim coloque S, se não coloque N");
    	esquina = Keyboard.readChar();
    	System.out.println("Seu terreno é em local comercial? Se sim coloque S, se não coloque N");
    	comercial = Keyboard.readChar();
    	System.out.println("Seu terreno está limpo? Se sim coloque S, se não coloque N");
    	limpo = Keyboard.readChar();
    	
    	valoriptu = 1.10;
    	
    	if (esquina=='s'){
    		valoriptu = valoriptu+0.20;
    		if (comercial=='s'){
    			valoriptu = valoriptu+0.10;
    			System.out.println(valoriptu);
    			if (limpo=='s'){
    				valorterreno = terreno*valoriptu;
    				totaldesconto = (valorterreno*25)/100;
    				iptu = valorterreno-totaldesconto;
    				System.out.println("Seu IPTU é: "+iptu);  				   				
    			}
    			else {
    				valorterreno = terreno*valoriptu;
    				System.out.println("Seu IPTU é: "+valorterreno);
    			}
    		}
    		else {
    			if (limpo=='s'){
    				valorterreno = terreno*valoriptu;
    				totaldesconto = (valorterreno*25)/100;
    				iptu = valorterreno-totaldesconto;
    				System.out.println("Seu IPTU é: "+iptu);   				   				
    			}
    			else {
    				valorterreno = terreno*valoriptu;
    				System.out.println("Seu IPTU é: "+valorterreno);
    			}
    	}
    	
    }
    else {
    	if (comercial=='s'){
    			valoriptu = valoriptu+0.10;
    			System.out.println(valoriptu); 
    			if (limpo=='s'){
    				valorterreno = terreno*valoriptu;
    				totaldesconto = (valorterreno*25)/100;
    				iptu = valorterreno-totaldesconto;
    				System.out.println("Seu IPTU é: "+iptu); 				   				
    			}
    			else {
    				valorterreno = terreno*valoriptu;
    				System.out.println("Seu IPTU é: "+valorterreno);
    			}
    		}
    		else {
    			if (limpo=='s'){
    				valorterreno = terreno*valoriptu;
    				totaldesconto = (valorterreno*25)/100;
    				iptu = valorterreno-totaldesconto;
    				System.out.println("Seu IPTU é: "+iptu);   				   				
    			}
    			else {
    				valorterreno = terreno*valoriptu;
    				System.out.println("Seu IPTU é: "+valorterreno);
    			}
    	}
    	
    }
    
    
}
}

eu to usando o JCreator, uso ele porque é o que está usando na faculdade.
o que acontece nesse codigo é que quando eu calculo a variavel: valoriptu = valoriptu + 0.10;
ele coloca um monte de dero e um 1 no final.
exemplo de resultado

Informe o tamanho do terreno
20
Seu terreno é de esquina? Se sim coloque S, se não coloque N
s
Seu terreno é em local comercial? Se sim coloque S, se não coloque N
s
Seu terreno está limpo? Se sim coloque S, se não coloque N
n
1.4000000000000001
Seu IPTU é: 28.000000000000004

Process completed.

mas c eu trocar esse valor para 0.20 ele calcula normal.

alguem sabe me dizer o que pode ser?

valeu!

sempre que vc for colocar codigo, utilize o [ code ] [ / code ]

Marky.Vasconcelos

Por que quando voce faz calculos com numeros reais com inteiros ele desconsidera os decimais.

invés de:

totaldesconto = (valorterreno<em>25)/100;

Coloque

totaldesconto = (valorterreno</em>25d)/100d;

@ceb10n
Por favor não de quote em um post gigante só para falar para colocar a tag.

G

mas o problema não é no desconto e sim quando calcula valoriptu = valoriptu + 0.10

Rafael_Marques1

Mark_Ameba:

@ceb10n
Por favor não de quote em um post gigante só para falar para colocar a tag.

eu dei o quote para eu ver melhor o que ele tinha escrito e ajudar. porém tive q fazer outra coisa aqui no serviço…

Criado 1 de abril de 2010
Ultima resposta 1 de abr. de 2010
Respostas 4
Participantes 3