Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

[Bug] Erro Código

Boa tarde, estou com problema no desafio 4, aonde, eu criei as funções e na hora de mostrar o resultado delas na tela aparece "NaN " e quando coloco fora da função o resultado aparece normal. Podem me ajudar o por que está ocorrendo isso por favor? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

10 respostas

Boa tarde, Luiz! Me parece que o erro está na forma que você está passando os parâmetros para as funções, você precisa passar os 2 valores, altura e largura, mas está passando as variáveis de resultado. Correção nas linhas 17 e 25.

  • Linha17: resultado1 = calculoDaArea(altura, largura);
  • Linha25: resultado2 = calculoDoPerimetro(altura, largura);

Concordo com o amigo Algacyr, você criou a função, mas não está utilizando para a finalidade que ela foi criada, está colocando como valor para os parâmetros uma váriavel que está dentro da própria função que está sendo chamada e ainda não possui nenhum valor, retornando como resultado NaN(not a number)

Boa noite pessoal, eu realizei as mudanças que vocês me indicaram, mas agora não aparece nada na tela e nem no console.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém eu tentei fazer sem a variáve "resultado" e com o cálculo da área ele aparece na tela o resultado do cálculo e o do perímetro não aparece nada na tela e nem no console. (no exemplo usei o valor de 50 para altura e 30 para largura). Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E quando coloco a variável "resultado" aparece o resultado da tela dos cálculos, mas quando fosse número inteiro não era para aparecer os zeros nas casas decimais depois da vírgula e sim somente nas dizimas periódicas e nas contas com números com vírgulas. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Opa agora funcionou, mas a função tofixed(2) era para pegar duas casas decimais em alguma dizima periódica ou conta com vírgula, mas agora aparece até quando dou um número inteiro. no caso ali eu usei o 50m para altura e 30m para largura, então na tela tinha que aparecer área=1500 m² e perímetro=160 metros. Como faço para mudar isso?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Boa noite! Vou tentar ir pontuando os erros que encontrar, e a gente vai resolvendo uma coisa por vez:

  • Nas linhas 13 e 21 o método toFixed está com o 'f' minúsculo

*Na primeira versão do código que você compartilhou após a correção que sugeri. Quer alterar isso e fazer um novo teste? Ou quer continuar a partir da versão atual?

O método toFixed(2) vai colocar 2 casas decimais mesmo se o número for inteiro, que nesse caso irá acrescentar dois 0's, por exemplo, 50 será formatado como "50.00"

Boa noite Algacyr, eu alterei aqui e tá funcionando o código, mas no caso eu gostaria que uma conta como 50 * 30 = 1500 e uma conta 80,56 * 50,54 = 4071,50. No caso ele pega a função toFixed para todos.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Entendi! Uma solução pra isso é utilizar o método isInteger pra verificar se o resultado é um número inteiro e não usar o toFixed nesses, se precisar de ajuda pra elaborar isso posso dar mais detalhes. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger

Opa Algacyr, to tentando usar essa estrutura "Number.isInteger", mas não tô obtendo êxito porque não tô sabendo em qual lugar no meu código colocar ela, se é dentro da função que já existe ou se teria que criar uma nova função ou se seria fora da função. Consegue me ajudar por favor?

solução!

Boa tarde! posso sugerir uma forma de usar isso, por exemplo, dentro das funções, antes de chamar o toFixed, você pode verificar:

Se o valor da área for um número inteiro (50 por exemplo) a função entra no bloco if e retorna o número sem formatar com o toFixed()

if (Number.isInteger(area)) {
    return area;
}
return area.toFixed(2);

E lá fora das funções você pega o resultado1 e 2

resultado1 = calculoDaArea(altura, largura);

Não precisa da variável resultado dentro das funções, você pode retornar os valores diretos, fica a seu critério.