Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

188
Visualizações
Palindrome dice infinito cuando se compara en la declaración final if

ok, lo he estado haciendo durante un tiempo, estoy haciendo un programa palíndromo en html por primera vez, pero cuando ingreso 111 dice que no es un palíndromo, aunque pasé por el bucle while con un cálculo y debería ser el mismo . Revisé las salidas revelando em y "input" = 111. "temp" = 0 como debería. "invertido" aunque es igual a infinito lol y idk y cualquier ayuda es apreciada.

 function Palindrome() { let input = document.querySelector("#userInput").value; var temp = input; let reversed = 0; while (temp > 0) { const lastDigit = temp % 10; reversed = (reversed * 10) + lastDigit; temp = (temp / 10); } if (input == reversed) { document.querySelector("#answer").innerHTML = `This is a Palindrome `; }else { document.querySelector("#answer").innerHTML = `This is not a Palindrome ${input} ${temp} ${reversed} `; } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Estás haciendo una división de coma flotante, por lo que la temp nunca será más de 0 hasta que hagas muchas iteraciones y obtengas un subdesbordamiento de coma flotante. Después de cada iteración, se convierte en 11.1 , luego en 1.11 , luego en 0.111 , .0111 , y así sucesivamente. Esto es multiplicar al reversed por 10 cada vez, y finalmente se desborda hasta el infinito.

Redondea el número al dividir para que se descarte la fracción:

 temp = Math.round(temp / 10); 

 function Palindrome(input) { var temp = input; let reversed = 0; while (temp > 0) { const lastDigit = temp % 10; reversed = (reversed * 10) + lastDigit; temp = Math.round(temp / 10); } if (input == reversed) { console.log(`This is a Palindrome ${input}`); } else { console.log(`This is not a Palindrome ${input} ${temp} ${reversed} `); } } Palindrome(111); Palindrome(123)

about 4 years ago · Juan Pablo Isaza Relatório

0

Como explicó Barmar en su respuesta sobre la división porcentual, ¡intenta deshacerte de ella!

 function Palindrome() { let input = document.querySelector("#userInput").value; //convert input to number var temp = +input;//or parseInt(input) let reversed = 0; while (temp > 0) { const lastDigit = temp % 10; reversed = reversed * 10 + lastDigit; temp = Math.floor(temp / 10);//<-- to prevent Infinity } if (input == reversed) { document.querySelector("#answer").innerHTML = `This is a Palindrome `; } else { document.querySelector( "#answer" ).innerHTML = `This is not a Palindrome ${input} ${temp} ${reversed} `; } }
 <input type="input" value="" id="userInput"> <input type="button" value="Is Palindrom" onclick="Palindrome()"> <div id='answer'></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda