Ir para conteúdo
Fórum Script Brasil
  • 0

BUG Global (Na matemática do JS)


Eu o Mister HTML !!!

Pergunta

Pessoal, vocês podem achar estranho, pois estou desenvolvendo um projeto, e aí, preciso criar uma função JS para verificar o maior número e retornar. Aí, fiz um teste prévio com os números 1, 58, 125, 987, 1025 e 3215 (não necessariamente nessa ordem). Ai, quando fui testar... todos os navegadores (IE, FF, Opera, NS, e Safari) ficam dizendo que 987 é o maior valor, sabendo-se que o NORMAL era para devolver 3215.

DEVERIA funcionar desse jeito:

O código pega a string e divide ela, transformando em um array (caracter "|")

depois vem um loop checar qual elemento tem o maior valor (com ajuda da variável ultimate)

depois ele retorna (return ultimate) o maior valor.

1) Será que quando o JS foi desenvolvido, não descobriram esse bug, e só agora vi que não é bug em particular de um só navegador, mas de TODOS?

2) Desde quanto 987 é maior que 3215?

3) Será que não tem jeito de escapar do bug (Script alternativo)?

O script:

<script>
function returnUltimate(fileArray){
fileArray = fileArray.split('|')

ultimate = 0
for (x=0;x<fileArray.length;x++){
if (ultimate < fileArray[x]){
ultimate = fileArray[x]
}
else {continue}
}
return ultimate
}

alert(returnUltimate("1|125|3215|58|987|1045"))
</script>

Mais UMA vez: não é bug só do IE ou do FF, é BUG GLOBAL!!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

É muito estranho mesmo ...mas suspeite do seu código, jamais haveria um bug em javascript desse naipe.

if (ultimate < fileArray[x])
Você quebrou uma string em várias strings com o split. Então nesse "if" você está comparando um número com uma string e não dois números.
if (ultimate < parseInt(fileArray[x]))

Caso não precise mexer com números de ponto flutuante, então pode transformar a string em um inteiro usando parseInt.

Akelabrasssssss

Link para o comentário
Compartilhar em outros sites

  • 0

Desse seu jeito funfou também, mas eu fiz doutra forma:

<script>
function returnUltimate(fileArray){
fileArray = fileArray.split('|')
fileArray.sort()

ultimate = 0
for (x=0;x<fileArray.length;x++){
if (ultimate < fileArray[x]){
ultimate = fileArray[x]
}
else {continue}
}
return ultimate
}

alert(returnUltimate("1|125|3215|58|987|1045"))
</script>

quando eu coloquei o fileArray.sort(), aí os browsers começaram a dizer que 3215 é o maior valor

Valeu, um grande abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Hum...ordenar o vetor e comparar strings??? Mister Html é adepto ao POG?

Olha amigo programar é fácil, mas eu vou te dizer viu... achar quem programa direito é muito difícil....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...