Cuando calculo [matemáticas] 1/19 [/ matemáticas] con Java, la salida es [matemáticas] 0.0 [/ matemáticas]. ¿Por qué esto es tan?

Hay una diferencia importante entre las líneas 3 y 4 en el siguiente ejemplo:

public static void main (String [] args)
{
System.out.println (1/19);
System.out.println (1f / 19f);
}

La línea 3 evalúa un entero. ¿Por qué no debería? Tanto el numerador como el denominador son enteros. Por definición, un número entero es un número entero, por lo que todo a la derecha del punto decimal se corta. Tenga en cuenta que no dije redondeado, simplemente se cae. Cuando se ejecuta, el cociente se calculará y el resto se ignorará. Si cumplió 18/19, aún obtiene 0 porque la respuesta es menor que 1.

En la línea 4, le digo al compilador que quiero evaluar dos flotantes. En Java, float es un tipo que permite una precisión inferior a 10 ^ 0. Esto significa que puede representar números entre 0 y 1. Dado que estoy declarando explícitamente que estos números deben evaluarse como flotantes, el resultado será un flotante que incluirá tanto el cociente como el resto expresado como decimal.

Por defecto, imprime un número entero. Si intenta obtener un valor decimal de hasta 8 puntos decimales, entonces puede intentar flotar mientras que si intenta obtener un número más preciso, puede intentar el doble. El tipo doble usa 8 bytes y el flotante usa 4. Por lo tanto, el doble preciso es más grande. Puede calcular el valor de 1/19 haciendo esto:

clase pública HelloWorld
{
public static void main (String [] args) {
int x = 1;
int y = 19;
flotador f = (flotador) x / y;
doble d = (doble) x / y;
// f = 0.05263158
System.out.println (“f =” + f);
// d = 0.6842105263157895
System.out.println (“d =” + d);

}
}

Un flotador te da aprox. Precisión de 6-7 dígitos decimales, mientras que un doble le da aprox. 15-16 . También el rango de números es mayor para el doble.

Hola

Debes estar haciendo la operación por Integers. Y no tipos de datos flotantes.

El compilador lo toma de la siguiente manera

(int) 1 / (int) 19 = (int) 0

Pero

(flotante) 1 / (flotante) 19 = (flotante) 0.052

El compilador completa el 0.052 a 0 para caber en el cubo Integer.

Entonces su solución es usar tipos de datos flotantes.

Esto es porque estás haciendo una división entera.

Debe especificar operandos (variables) para que sean “Dobles”.


Quora está dando más inspiración a mis razones para hacer un blog de tecnología.

Ya tengo un sitio: http://www.techaceventura.con (en construcción)

fb: Tech Ace Ventura | Facebook

Debido a la división de enteros te deja con un entero. trata de hacerlo

división doble o flotante. Ej. 1.0 / 19.0

Quizás ambos operandos son enteros. Intente lanzar uno de ellos a un número FP (es decir, doble o flotante) antes de hacer la división.