Estou com problemas para imprimir um numero double, por exemplo eu crio uma variavel do tipo double, e este recebe o um divisao 1/3, teria que mostra 0.3…e ele esta imprimindo 0.0. Criei um exemplo para vcs testarem ai…o que eu tenho que fazer para imprimir 0.3???
public class Teste{
public static void main(String [] a){
double variavel=1/3;
System.out.println(variavel);
}
Olha pessoal, tenham cuidado com os tipos primitivos float e double.
Quem não leu, precisa ler o JDC Tech Tips de 4 de fevereiro de 2003 (Some Things You Should Know About Floating-Point Arithmetic – Algumas coisas que você deve saber sobre aritimética de ponto flutuante).
double variavel=1/3;
System.out.println(variavel);
ele ta fazendo o seguinte
int tmp=1/3; //por que 1 e 3 são inteiros
double variavel=(double)tmp;
e aqui
double x=1;
double y=3;
System.out.println(x/y);
ele esta fazendo realmente uma divisão de ponto flutuante, a diferença basica é que no primeiro ele divide os inteiros e transforma o resultado em double
o seguinte codigo também funcionaria
public class Teste{
public static void main(String [] a){
double variavel=1/3.0;
System.out.println(variavel);
}
}
por que neste caso, um dos operadores é double/float ai ele vai primeiro promover o integer para double e depois realizar a operação
isto é uma das coisas que sinto falta do delphi
quer fazer operações de ponto flutuante?? utilize “/”, quer fazer operações de inteiros?? utilize “div”
mais simples do que a abordagem do java
se bem que depois que se comessa a entender este esquema de promoções numericas fica mais facil