veamos los siguientes ejemplos :
1) para un float
for(float i = 0f; i<1; i += 0.1f){
System.out.println(""+ i );
}
salida :
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
2) para double
double dividendo = 1812.6;
double resultado = 0;
resultado = dividendo / 100;
System.out.println("resulatado :"+resultado);
salida: 18.125999999999998
para solucionar esta imprecision de la variables primitivas de coma
flotante tenemos que implementar la clase BigDecimal.
http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html
otra forma menos formal es redondiar el valor decimal con
el metodo math.round()
este error no es propio de java , sino de la mayoria de los lenguajes
de programacion .
en este link explica porque sucede esto
http://developers.sun.com/solaris/articles/fp_errors.html
y como estamos hablando de decimales seria bueno mencionar
mencionar la forma de dar formato a una decimal.
import java.text.DecimalFormat;
DecimalFormat formateador = new DecimalFormat("####.####");
// Esto sale en pantalla con cuatro decimales, es decir, 3,4324
System.out.println (formateador.format (3.43242383));
miércoles, 5 de noviembre de 2008
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario