Alguem poderia me dizer por que?

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!

[quote=gustavopnbr]Ola,

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

[code]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);
			}
	}
	
}

}
}
[/code]

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![/quote]

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

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

invés de:
totaldesconto = (valorterreno25)/100;
Coloque
totaldesconto = (valorterreno
25d)/100d;

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

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

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

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…