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 = (valorterreno25d)/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…