Java - Error en factorial 13

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Error en factorial 13

Publicado por Juan Nazaret (2 intervenciones) el 29/03/2019 06:54:20
Estoy tratando de obtener el factorial de 13 y almacenándolo en una variable int, pero el numero que me arroja es 1932053504, pero el número que debería salir es 6227020800. Ya lo he almacenado en una variable long e incluso he utilizado BigInt pero me sale el mismo resultado. No entiendo porqué. ayudenme porfavor.

el código es el siguiente, y aunque utilice una varibale long, me sale el mismo resultado, 1932053504

1
2
3
4
5
6
7
8
9
10
11
public class Pruebas {
 
    public static void main(String[] args) {
 
        long factorial;
        factorial = (479001600 *13);
 
JOptionPane.showMessageDialog(null, factorial);
 
    }
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error en factorial 13

Publicado por Kabuto (1379 intervenciones) el 29/03/2019 13:07:25
Sí, estas usando una variable long, pero estas operando con números int. Por lo tanto, estás obteniendo un resultado int y no va a importar si lo guardas o no en una variable long.

Tienes que operar con valores long, y esto lo solucionas de forma muy sencilla. Basta con que añades una "ele" --> l a los números con los que estás operando.
El compilador de Java siempre va a considerar los números como int, a no ser que de algún modo le indiquemos lo contrario.

1
2
3
4
5
6
7
8
9
10
11
public class Pruebas {
 
    public static void main(String[] args) {
 
        long factorial;
        factorial = (479001600l *13l);
 
JOptionPane.showMessageDialog(null, factorial);
 
    }
}

La ele puede ser minúsucula o mayúscula, como tu prefieras. Normalmente la mayúscula es más visible a ojos del programador, por lo que podría ser más recomendable para obtener mayor legibilidad.

1
2
3
4
5
6
7
8
9
10
11
public class Pruebas {
 
    public static void main(String[] args) {
 
        long factorial;
        factorial = (479001600L *13L);
 
JOptionPane.showMessageDialog(null, factorial);
 
    }
}

Por cierto, en este caso no hace falta que pongas la ele a los dos números. Por ejemplo el 13 puede quedarse como int y funcionará igual.
De nuevo tú eliges como prefieres hacerlo.

1
2
3
4
5
6
7
8
9
10
11
public class Pruebas {
 
    public static void main(String[] args) {
 
        long factorial;
        factorial = (479001600L *13);
 
JOptionPane.showMessageDialog(null, factorial);
 
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar