Tengo una duda sobre un ejercicio (en JavaScript) sobre el factorial de un entero. Tengo dos condiciones que no puedo resolver: El factorial de un número negativo no existe. ¿Cómo puedo mostrar esto? Ingrese números decimales usando el punto decimal: 1.54. Creo que los decimales también pueden ser factoriales. ¿Pero cómo?
function fact(){ var i; var number; var f; f = 1; number = document.getElementById("number").value; for(i = 1; i <= number; i++) { f = f * i; } i = i - 1; document.getElementById("result").innerHTML = "The factorial of the number " + i + " is: " + f ; } Enter a number: <input id = "number"> <button onclick = "fact()"> Factorial </button> <p id = "result"></p>El factorial de un número negativo no existe. ¿Cómo puedo mostrar esto?
Una declaración if simple debería permitirle verificar el valor de number . Si ese valor está por debajo de cero (lo que significa que es un número negativo), muestra un mensaje diferente en la página:
if (number < 0) { document.getElementById("result").innerHTML = "Invalid input. A positive number is required"; }Ingrese números decimales usando el punto decimal:
1.54. Creo que los decimales también pueden ser factoriales. ¿Pero cómo?
Wikipedia define factorial de la siguiente manera:
En matemáticas, el factorial de un entero no negativo n, denotado por n!, es el producto de todos los enteros positivos menores o iguales que n.
Lo que significa que un valor de 1.54 no es válido, ya que no es un número entero.
Qué hacer al respecto depende de usted. Algunas ideas:
Math.round(number)Math.floor(number)if (Math.floor(number) === number)O como señala @ 0stone0 en un comentario a esta respuesta, los factoriales fraccionarios pueden ser una cosa. No estoy seguro de cómo convertir esa matemática a javascript. Pero el punto es que depende de usted cómo quiere manejar estos casos extremos.
Por último, vale la pena hablar de esta línea:
number = document.getElementById("number").value; Aquí number es una cadena, en realidad no es un número. Esto significa que son los caracteres "123" en lugar del número 123 . Probablemente quiera usar parseInt o parseFloat en ese valor para convertirlo en un número real.
Javascript a veces convierte esa cadena en un número para usted cuando realiza operaciones matemáticas, pero no es una buena práctica confiar en eso, ya que puede causar algunos errores extraños y sutiles que son difíciles de entender.