Divisão de números inteiros.
Olá!
Tenho o seguinte código:
Que imprime o seguinte valor na saída padrão:
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:
Por que na divisão "3 / 2" foi impresso o valor "1.0", em vez de "1.5"?
:arrow:
System.out.println(3 / 2);
1.0
System.out.println((double)3 / 2);
Carlos Coral
Curtidas 0
Respostas
Cybermix
09/04/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
GOSTEI 0
Lucas Henrique
09/04/2009
[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]
GOSTEI 0
Luiz Pereira
09/04/2009
[quote="duCoral"]Olá!
Tenho o seguinte código:
Que imprime o seguinte valor na saída padrão:
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:
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 / 2);
1.0
System.out.println((double)3 / 2);
System.out.println(3.0 / 2);
GOSTEI 0
Lella
09/04/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 :!:
GOSTEI 0
Carlos Heuberger
09/04/2009
[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);
... System.out.println("Indice = " + (i+1));
GOSTEI 0
Carlos Coral
09/04/2009
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:
GOSTEI 0
Carlos Coral
09/04/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!!
GOSTEI 0
Carlos Coral
09/04/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:
resulta na saida padrao:
[list]2.02[/list]
[size=10:daef8dc88d]Outros resultados:
[/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?
[]
System.out.println(2.0 + "2");
2D + "2" -> "2.02" 2F + "2" -> "2.02" 2.000 + "2" -> "2.02"
GOSTEI 0
Carlos Coral
09/04/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.
Beijinhos
public class Concatenar{ static int x; public static void main (String args[]) { x = 2; System.out.println ( x+"2"); } }
GOSTEI 0
Carlos Coral
09/04/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:
[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 ... static int x; ...
... static double x; ...
GOSTEI 0
Carlos Coral
09/04/2009
Oh, querido, valeu!!!
Não queria que vc achasse que era estupidez, mas vamos nos ajudar!
Bjocas
GOSTEI 0
Carlos Coral
09/04/2009
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:
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! :!:
System.out.println(new Double(3/2));
GOSTEI 0