elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con la precisión del double
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con la precisión del double  (Leído 5,462 veces)
danielo-

Desconectado Desconectado

Mensajes: 218


:)


Ver Perfil
Problema con la precisión del double
« en: 27 Marzo 2012, 15:47 pm »

Haciendo una tarea para la creación de Redes Neuronales Artificiales, en donde necesito una gran precisión con los numeros, me tope con un problemita, que no busco como dar la explicación ni como resolver, la cuestión es simple:

Código
  1. double d1=0.5;
  2. double d2 = 0.4;
  3. System.out.println(d2-d1);
  4.  

en teoría el resultado debería dar = 0.1, pero el relsultado de esta operación en java es de: -0.09999999999999998 o.O ??? no lo entiendo, quiero pensar que tiene que ver con la precisión del valor double, pero pero... sigo sin entender U.U


En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: Problema con la precisión del double
« Respuesta #1 en: 27 Marzo 2012, 19:26 pm »

Aca te hice un ejemplo... lo que te falta es redondear y restar a la inversar ...

Código:
class Prueba{
        public static void main(String[] args)
        {
                double d1=0.5;
                double d2 = 0.4;

                double resta=(d1-d2);
                System.out.println(redondear(resta,2));

        }
        static double redondear( double numero, int decimales ) {
                return Math.round(numero*Math.pow(10,decimales))/Math.pow(10,decimales);
        }

}


En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Problema con la precisión del double
« Respuesta #2 en: 27 Marzo 2012, 19:31 pm »

Pero porque no da el resultado que debería dar y da ese numero inexacto? Esa es la pregunta y yo tambien quiero saber. No debería ser necesario redondearlo porque da un numero exacto. Sacalo con la calculadora XD
En línea

fran800m

Desconectado Desconectado

Mensajes: 204



Ver Perfil
Re: Problema con la precisión del double
« Respuesta #3 en: 27 Marzo 2012, 20:11 pm »

Sería interesante una respuesta, porque a veces me ha pasado parecido con PHP y es frustrante, te ves impotente ante algo que carece por completo de sentido.
En línea

danielo-

Desconectado Desconectado

Mensajes: 218


:)


Ver Perfil
Re: Problema con la precisión del double
« Respuesta #4 en: 27 Marzo 2012, 21:07 pm »

Exacton, no entiendo porque sucede esto, y es algo tedioso, pero en fin, lo he resuelto de la siguiente manera:
Código
  1. public double redondea(double num){
  2.        BigDecimal res;
  3.        res = new BigDecimal(num).setScale(12, BigDecimal.ROUND_HALF_DOWN);
  4.        double resultado = res.doubleValue();
  5.        //System.out.println(resultado);
  6.        return resultado;
  7.    }
  8.  
  9.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Bitrate + Motion Search Precision
Multimedia
G3N3S1S 2 2,544 Último mensaje 13 Enero 2005, 23:23 pm
por fanny
Dell precision T7400 Problema instalación
Hardware
Bht Sata 3 4,448 Último mensaje 4 Octubre 2011, 08:56 am
por Bht Sata
Obtener más precisión que long double en C?¿?
Programación C/C++
jhonsc 3 3,552 Último mensaje 4 Febrero 2012, 13:48 pm
por Xandrete
duda matematica de precision arbitraria
Programación C/C++
engel lex 0 2,214 Último mensaje 5 Abril 2014, 04:00 am
por engel lex
Problema con float y double!!!!
Programación C/C++
EdgarKrieger 6 3,992 Último mensaje 23 Mayo 2014, 01:57 am
por Blaster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines