doubles java, no devuelven decimales

ras-zilot

Bovino Milenario
#1
double xi=Double.parseDouble(jTextField2.getText()),yi=Double.parseDouble(jTextField3.getText()),k1=0,k2=0,yif=0,j1=0,j2=0;
float h=Float.parseFloat(jTextField4.getText());
float aux=Integer.parseInt(jTextField6.getText()),eva=Integer.parseInt(jTextField1.getText());
char signo1=jTextField5.getText().charAt(0), signo2=jTextField7.getText().charAt(0);
double y=Character.digit(jTextField5.getText().charAt(1),10) , x=Character.digit(jTextField7.getText().charAt(1),10);
double num=(eva-xi)/h;
for(int i=0;i<num;i++){

if(signo1=='+'&&signo2=='-'){
k1=((-1*yi*y)+(xi*x))/(aux);
j1=xi+(3/4)*h;
j2=yi+((3/4)*k1*h);
k2=((-1*y*j2)+(x*j1))/aux;
System.out.println(j1);
System.out.println(j2);
System.out.println(k1);
System.out.println(k2);
}


}
System.out.println(yif);




}




Este es mi codigo, programo un metodo numerico y probando los valores para k2 al imprimirlos no me esta devolviendo el valor real, me esta devolviendo el valor como si fuera entero si tomar en cuenta el punto decimal para verlo ni para calculos posteriores. Los valores con los que pruebo son: h=.5, aux=2 , eva=3, signo1=+,signo2=-, y=3, x=2, num=4 .
Los valores que me imprime son estos
1.0
5.0
-6.5
-6.5

me esta ignorando los puntos decimales :s deveria de poner que j1 vale 1.375 y que j2 vale 5.375 :s
No se porque me esta ignorando los puntos decimales, alguien me ayuda????
 

Salandrews

Bovino maduro
#2
Este es un error lógico. El problema es que el operador "/" es el operador de división entera. Esto quiere decir que 3/4 = 0.

Entonces, en las expresiones:

j1=xi+(3/4)*h;
j2=yi+((3/4)*k1*h);

Simplemente cambia, 3/4 por 0.75

j1=xi+(0.75)*h;
j2=yi+((0.75)*k1*h);

Saludos
 

ras-zilot

Bovino Milenario
#3
me soluciono el problema, muchas gracias, ya llebo tiempo programando metodos numericos en java y no tenia ni idea de eso tan raro con el operador /. Se agradece mucho la ayuda
 
Arriba