Divisão de números inteiros.

09/04/2009

Olá! Tenho o seguinte código:
System.out.println(3 / 2);
Que imprime o seguinte valor na saída padrão:
1.0
Para imprimir o valor [b]1.5[/b] (que era o valor que [b]eu[/b] esperava) tive que fazer a seguinte alteração no código:
System.out.println((double)3 / 2);
Por que na divisão "3 / 2" foi impresso o valor "1.0", em vez de "1.5"? :arrow:

Carlos Coral

Respostas

09/04/2009

Cybermix

o tipo de entrada é inteiro, a saida sera inteiro tambem. uma solucao é fazer o casting na hora da saida como voce fez. outra solucao é o 3 e o 2 serem float/double em vez de int
Responder Citar

09/04/2009

Lucas Henrique

Por que na divisão "3 / 2" foi impresso o valor "1.0", em vez de "1.5"? :arrow:
3 / 2 = [b]1[/b] 3 % 2 = [b]1[/b]
Responder Citar

09/04/2009

Luiz Pereira

Olá! Tenho o seguinte código:
System.out.println(3 / 2);
Que imprime o seguinte valor na saída padrão:
1.0
Para imprimir o valor [b]1.5[/b] (que era o valor que [b]eu[/b] esperava) tive que fazer a seguinte alteração no código:
System.out.println((double)3 / 2);
Por que na divisão "3 / 2" foi impresso o valor "1.0", em vez de "1.5"? :arrow:
Faça a operação com pelo menos um numero como double ou float
System.out.println(3.0 / 2);
flw
Responder Citar

09/04/2009

Lella

Concordando com os colegas, sugiro que utilize double ou float e lembre-se: 2.0 + 2.0 = 4.0 real + real = real 2.0 + 2 = 4.0 real + int = real e 2.0 + "2" = "22" real + string = string Abraços :!:
Responder Citar

09/04/2009

Carlos Heuberger

2.0 + "2" = "22"
eu acho que o certo seria: [list]2.0 + "2" = "2[u].0[/u]2" :arrow: [/list] e mais umas interessantes: [list][*:8799cdaa93] 1 + 2 + "3" = "33" [*:8799cdaa93] "1" + 2 + 3 = "123"[/list] Portanto cuidado com:
    ...
    System.out.println("Indice = " + i+1);
correto seria
    ...
    System.out.println("Indice = " + (i+1));
[]
Responder Citar

09/04/2009

Carlos Coral

Só complementando. Na linguagem pascal existem dois operadores, [b]div[/b] e [b]/[/b], que retornam o valor inteiro e real em uma divisão, respectivamente. Java tem apenas [b]/[/b] para operações de divisão. Portanto, para obter o valor inteiro de uma divisão (ou divisões), basta certificar-se de que os termos envolvidos sejam inteiros. E para retornar o valor real, pelo menos um dos termos deve ser real. Caso tenha falado alguma bobagem, por favor, me corrijam. Obrigado a todos. :evil:
Responder Citar

09/04/2009

Carlos Coral

quando temos um nº real + string, no caso de: (2.0 + "2"), podemos afirmar que ocorre uma concatenação, onde podemos visualizar a grosso modo; 2.0 + "2" ------ 22 Eu tenho certeza dessa colocação, mas o simu colocou-a em prova, se eeu estiver errada me corrijam!!
Responder Citar

09/04/2009

Carlos Coral

Oi, obviamente eu fiz o teste antes de escrever algo contradizendo o que outra pessoa escreveu no forum. Ainda mais sendo apenas uma linha de codigo. Com a minha instalaçao: Eclipse 3.0.0 (200406251208), Java 5 (1.5.0-beta-b32c) e Locale("de", "DE"), o resultado de:
System.out.println(2.0 + "2");
resulta na saida padrao: [list]2.02[/list] [size=10:daef8dc88d]Outros resultados:
2D + "2"  ->  "2.02"
2F + "2"  ->  "2.02"
2.000 + "2"  ->  "2.02"
[/size:daef8dc88d] Como eu presumi a conversao do [b]real[/b] 2.0 resulta no String "2.0". [size=14:daef8dc88d][color=darkred:daef8dc88d]Gostaria de saber qual constelaçao/Java resulta em [b]"22"[/b]?[/color:daef8dc88d][/size:daef8dc88d] Talvez os mais antigos (antes do 1.4.2)? ou sera que é a localizacao? []
Responder Citar

09/04/2009

Carlos Coral

Eu gostaria de deixar bem claro, se ainda alguém não percebeu que estou iniciando em java, porém a colocação a qual fiz, foi devido um estudo na faculdade, levando em consideração que eu e centenas de pessoas estamos começando a entender a linguagem, a constelação em que um iniciante consegue obter um resultado de 22 em concatenação, é no BN, compilando e executando no prompt do DOS, agora me desculpem a ignorância de ter pensado desde o inicio, aliás quem começa não tem obrigação de utilizar o Eclipse 3.0 ou sei lá o quê. É importante ressaltar que esse é um fórum conceituadíssimo, foi por isso que o escolhi, acredito que humildemente possa haver comunicação entre seus usuários.Pode ser que eu tenha feito alguma confusão entre declarar real e int, mas acredito que pessoas que tenham conhecimeto, como vc, possam ser capazes de ajudar quem erra e quer aprender.
 public class Concatenar{
     static int x;
           public static void main (String args[]) {
     x = 2;
           System.out.println ( x+"2");
} 
   }
Beijinhos
Responder Citar

09/04/2009

Carlos Coral

oba, nao me leva a mal, só estou tentando ajudar e quem sabe evitar algum problema nos programas futuros.... agora fiquei meio confuso... provavelmente por causa do horario... 1 da madrugada pensei que estavamos falando de numeros reais :oops:
2.0 + "2" = "22" real + string = string
e
quando temos um nº real + string, no caso de: (2.0 + "2"), podemos afirmar que ocorre uma concatenação, onde podemos visualizar a grosso modo; 2.0 + "2" ------ 22
eu tenho que admitir que voce tem razao, se for considerar numeros inteiros como no seu ultimo exemplo:
...
    static int x;
...
onde [b]x[/b] esta sendo declarado como uma variavel para numeros inteiros e nao para numeros reais. O que eu escrevi vale para numeros reais, ai teria que declarar:
...
    static double x;
...
Erro meu, eu deveria ter escrito nos artigos anteriores que estava me referindo a numeros (variaveis) reais (double)... :oops: [size=14:3668882cae]e tudo isso nao explica porque System.out.println(3/2) resulta em 1.0[/size:3668882cae]
Responder Citar

09/04/2009

Carlos Coral

Oh, querido, valeu!!! Não queria que vc achasse que era estupidez, mas vamos nos ajudar! Bjocas
Responder Citar

09/04/2009

Carlos Coral

Olá! Queria pedir desculpas, acho que meu tópico gerou um pouco de confusão. Fui infeliz em afirmar que o comando [b]System.out.println(3/2) resultava em 1.0[/b]. Na verdade resulta em [b]1[/b]. Este comando vai resultar em [b]1.0[/b] se o comando for algo do tipo:
System.out.println(new Double(3/2));
Era +/- esse o erro que eu estava comentendo. :oops: Também, queria agradecer a todos que participaram deste tópico, pois sei que a vontade de cada um aqui foi a de ajudar e ser ajudado. Obrigado! :!:
Responder Citar