Array
(
)

Divisão de números inteiros.

Carlos Coral
   - 09 abr 2009

Olá! Tenho o seguinte código: #Código

System.out.println(3 / 2);
Que imprime o seguinte valor na saída padrão: #Código
1.0
Para imprimir o valor 1.5 (que era o valor que eu esperava) tive que fazer a seguinte alteração no código: #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:

Cybermix
   - 09 abr 2009

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

0
|
0

Lucas Henrique
   - 09 abr 2009


Citação:
="duCoral"] Por que na divisão "3 / 2" foi impresso o valor "1.0", em vez de "1.5"? :arrow:
3 / 2 = 1 3 % 2 = 1

0
|
0

Luiz Pereira
   - 09 abr 2009


Citação:
="duCoral"]Olá! Tenho o seguinte código: #Código

System.out.println(3 / 2);
Que imprime o seguinte valor na saída padrão: #Código
1.0
Para imprimir o valor 1.5 (que era o valor que eu esperava) tive que fazer a seguinte alteração no código: #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 #Código
System.out.println(3.0 / 2);
flw

0
|
0

Lella
   - 09 abr 2009

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 :!:

0
|
0

Carlos Heuberger
   - 09 abr 2009


Citação:
="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: #Código

...
    System.out.println("Indice = " + i+1);
correto seria #Código
...
    System.out.println("Indice = " + (i+1));
[]

0
|
0

Carlos Coral
   - 09 abr 2009

Só complementando. Na linguagem pascal existem dois operadores, div e /, que retornam o valor inteiro e real em uma divisão, respectivamente. Java tem apenas / 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.

0
|
0

Carlos Coral
   - 09 abr 2009

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!!

0
|
0

Carlos Coral
   - 09 abr 2009

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: #Código

System.out.println(2.0 + "2");
resulta na saida padrao: [list]2.02[/list] [size=10:daef8dc88d]Outros resultados: #Código
2D + "2"  ->  "2.02"
2F + "2"  ->  "2.02"
2.000 + "2"  ->  "2.02"
[/size:daef8dc88d] Como eu presumi a conversao do real 2.0 resulta no String "2.0". [size=14:daef8dc88d]Gostaria de saber qual constelaçao/Java resulta em "22"?[/size:daef8dc88d] Talvez os mais antigos (antes do 1.4.2)? ou sera que é a localizacao? []

0
|
0

Carlos Coral
   - 09 abr 2009

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. #Código

public class Concatenar{
     static int x;
           public static void main (String args[]) {
     x = 2;
           System.out.println ( x+"2");
} 
   }
Beijinhos

0
|
0

Carlos Coral
   - 09 abr 2009

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:
Citação:
="lella"]2.0 + "2" = "22" real + string = string
e
Citação:
="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: #Código

...
    static int x;
...
onde x 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: #Código
...
    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]

0
|
0

Carlos Coral
   - 09 abr 2009

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

0
|
0

Carlos Coral
   - 09 abr 2009

Olá! Queria pedir desculpas, acho que meu tópico gerou um pouco de confusão. Fui infeliz em afirmar que o comando System.out.println(3/2) resultava em 1.0. Na verdade resulta em 1. Este comando vai resultar em 1.0 se o comando for algo do tipo: #Código

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! :!:

0
|
0