Foros del Web » Programación para mayores de 30 ;) » Java »

Multiplicando: 3*0.6=1.79999999998¿?¿?

Estas en el tema de Multiplicando: 3*0.6=1.79999999998¿?¿? en el foro de Java en Foros del Web. Hola, tengo una tabla con el valor 3, lo obtengo: this.jTable1.getValueAt(fila,columna).toString(); He probado pasandolo a Entero y a Double, y el resultado al hacer: (Integer.ParseInt(this.jTable1.getValueAt(fila,col ...
  #1 (permalink)  
Antiguo 26/06/2009, 05:13
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Multiplicando: 3*0.6=1.79999999998¿?¿?

Hola, tengo una tabla con el valor 3, lo obtengo:

this.jTable1.getValueAt(fila,columna).toString();

He probado pasandolo a Entero y a Double, y el resultado al hacer:

(Integer.ParseInt(this.jTable1.getValueAt(fila,col umna).toString()))*0.6

me da 1.79999998

¿?¿? Alguien sabe como conseguir el 1.8 que es el valor esperado....
¿A qué se debe esto?

Gracias. Por cierto si lo multiplico por otro dato que tengo en la tabla que es 2, me da sin embargo 1.2€ exactamente
  #2 (permalink)  
Antiguo 26/06/2009, 05:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Multiplicando: 3*0.6=1.79999999998¿?¿?

Hay una laaaaarga explicación basada en la inexactitud de la representación de numeros que pueden tener infinitos dígitos en un número de digitos finito ...

http://www.ibm.com/developerworks/ja...ary/j-jtp0114/

Pero la respuesta corta es: Si quieres precision con numeros de coma flotante en Java, usa BigDecimal y BigInteger. F/float y D/double tienen precisión muy limitada.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:36.