Java - Duda con números reales

 
Vista:
sin imagen de perfil

Duda con números reales

Publicado por pelaitas (3 intervenciones) el 16/04/2018 00:29:59
Hola por qué esto:

1
System.out.println(1F/12);

Da: 0.083333336

Este último 6 de dónde sale

Gracias anticipadas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oliver
Val: 189
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda con números reales

Publicado por Oliver (67 intervenciones) el 16/04/2018 05:53:06
Este comportamiento se debe a que Java utiliza la especificación IEEE 754 que indica que solamente se almacenarán los 15 dígitos significativos de cualquier número y eso se cumple inclusive para números con decimales.

1
2
3
4
5
Parámetro	flotador	   flotante-extendido-exponente	         doble	         Extender doblemente extendido
norte	             24	                    24	                  53	                           53
K	                  8	                    ≥ 11	              11	                          ≥ 15
E max	            +127	              ≥ +1023	             +1023	                         ≥ +16383
E min	            -126	              ≤ -1022                -1022                       	 ≤ -16382
Cuando uno o ambos conjuntos de valores de exponente extendido son soportados por una implementación, entonces para cada conjunto de valores de exponente extendido admitido hay una constante dependiente de implementación específica K , cuyo valor está restringido por la Tabla 4.1 ; este valor K a su vez dicta los valores para E min y E max .


PERO EN RESUMIDA CUENTA CARNAL EL 6 SOLO TE DICE QUE HAY 6 NUMEROS MAS IGUALES, EN TU CASO 6 -> (3) MAS Y LO QUE HARIAN O SUMARIAN 15 DIGITOS PORQUE 0.83333333+333333 = 15 DIGITOS , ENTOCES EL 6 TE REEMPLAZA LOS (333333), PUEDES PROBAR CON TU CALCULADORA DIVIDIENDO 1/3=0.333333336...THATS ALL FOLKS!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda con números reales

Publicado por pelaitas (3 intervenciones) el 16/04/2018 10:28:54
Entonces este:

1
System.out.println(2F/3);

Da 0.6666667

que son 13 dígitos, faltarían dos...

Y en este caso

1
System.out.println(2F/6);

0.33333334

Que serían 11 dígitos.

Y con este

1
System.out.println(2F/9);

0.22222222

Que no se aproxima a lo que comentas.

Esto es un poco extraño no?

Gracias anticipadas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oliver
Val: 189
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Duda con números reales

Publicado por Oliver (67 intervenciones) el 16/04/2018 21:17:50
Es facil amiguito , para programar debemos tener conociemientos basicos de matematicas ,algebra, fisica , etc, etc .... todo lo que tenga que ver con decimales debes estudiarlo en topicos como truncamiento, cifras significativas , redondeo , etc... por ejemplo en el caso que te da 0.0666666667, es porque se aplica el redondeo y quiere decir que el decimal en conclusion es 0.7 debido a que despues de 5 en la decima se redondea al siguiente y asi hay muchas reglas pero como te dije estan ligadas a esos topicos que te describi antes !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar