Divisão de números inteiros.

09/04/2009

0

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

Carlos Coral

Responder

Posts

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

09/04/2009

Lucas Henrique

[quote="duCoral"] 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

09/04/2009

Luiz Pereira

[quote="duCoral"]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

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

09/04/2009

Carlos Heuberger

[quote="lella"]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

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

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

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

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

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: [quote="lella"]2.0 + "2" = "22" real + string = string
e [quote="lella"]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

09/04/2009

Carlos Coral

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

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar