2
respostas

Dúvida com o Math.round

Math.round(media) na primeira parte do calculo da média das idades em 2020 o resultado esta como "NaN"

Já na segunda parte onde calcula para 2021 o Math.round esta mostrando o resultado correto.

Quando inverto a primeira parte pela segunda acontece a mesma coisa na função Math.round.

Poderia explicar o que esta ocorrendo?

insira seu código aqui

<meta charset="utf-8">
<h1> Calculando as idades</h1>
<script type="text/javascript">

  var ano = 2020;
  var media = (idadeIvan + idadeJoana + idadeAlice) / 3;
  var idadeIvan = 42;
  var idadeJoana = 32;
  var idadeAlice = 3;
  var nome01 = "Ivan";
  var nome02 = "Joana";
  var nome03 = "Alice";

  document.write ("<h1>Cálculo de Idade com Variável</h1>");
  document.write ("As Idades de Ivan, Joana e Alice em 2020");
  document.write ("<br>");
  document.write (nome01 + " tem " + idadeIvan + " anos");
  document.write ("<br>");
  document.write (nome02 + " tem " + idadeJoana + " anos");
  document.write ("<br>");
  document.write (nome03 + " tem " + idadeAlice + " anos");
  document.write ("<br>");
  document.write ("Logo, a média das idades é " + Math.round(media));
  document.write ("<br>");

</script>



<script type="text/javascript">

  ano = 2021;
  media = (idadeIvan + idadeJoana + idadeAlice) / 3;
  idadeIvan = 43;
  idadeJoana = 32;
  idadeAlice = 4;
  nome01 = "Ivan";
  nome02 = "Joana";
  nome03 = "Alice";

  document.write ("<br>");
  document.write ("As Idades de Ivan, Joana e Alice em 2021");
  document.write ("<br>");
  document.write (nome01 + " tem " + idadeIvan + " anos");
  document.write ("<br>");
  document.write (nome02 + " tem " + idadeJoana + " anos");
  document.write ("<br>");
  document.write (nome03 + " tem " + idadeAlice + " anos");
  document.write ("<br>");
  document.write ("Logo, a média das idades é " + Math.round(media));
  document.write ("<br>");

</script>
2 respostas

Ivan, tudo bom?

A linha abaixo precisa ficar depois da declaração das variáveis:

 var media = (idadeIvan + idadeJoana + idadeAlice) / 3;

Na primeira parte a média fica com valor NaN pq as variáveis de idade estão nulas (NaN). Na segunda parte você tem a impressão que o cálculo é feito corretamente, mas ele tem o mesmo problema. Ele faz o cálculo com os primeiros valores e não com os segundos, ou seja, os valores utilizados para calcular a média são [42,32,3] ao invés de [43,32,4].

Para tirar a dúvida a primeira média dá 25.5 e a segunda 26.3, ambos arredondados teremos 26.

Corrigido fica assim:

<html>
    <head>
        <title>Teste</title>
        <meta charset="utf-8">
        <script type="text/javascript">

        var ano = 2020;
        var idadeIvan = 42;
        var idadeJoana = 32;
        var idadeAlice = 3;
        var nome01 = "Ivan";
        var nome02 = "Joana";
        var nome03 = "Alice";
        var media = (idadeIvan + idadeJoana + idadeAlice) / 3;

        document.write ("<h1>Cálculo de Idade com Variável</h1>");
        document.write ("As Idades de Ivan, Joana e Alice em 2020");
        document.write ("<br>");
        document.write (nome01 + " tem " + idadeIvan + " anos");
        document.write ("<br>");
        document.write (nome02 + " tem " + idadeJoana + " anos");
        document.write ("<br>");
        document.write (nome03 + " tem " + idadeAlice + " anos");
        document.write ("<br>");
        document.write ("Logo, a média das idades é " + Math.round(media));
        document.write ("<br>");

        </script>

        <script type="text/javascript">

            ano = 2021;
            idadeIvan = 43;
            idadeJoana = 32;
            idadeAlice = 4;
            nome01 = "Ivan";
            nome02 = "Joana";
            nome03 = "Alice";
            media = (idadeIvan + idadeJoana + idadeAlice) / 3;

            document.write ("<br>");
            document.write ("As Idades de Ivan, Joana e Alice em 2021");
            document.write ("<br>");
            document.write (nome01 + " tem " + idadeIvan + " anos");
            document.write ("<br>");
            document.write (nome02 + " tem " + idadeJoana + " anos");
            document.write ("<br>");
            document.write (nome03 + " tem " + idadeAlice + " anos");
            document.write ("<br>");
            document.write ("Logo, a média das idades é " + Math.round(media));
            document.write ("<br>");
        </script>
    </head>
    <body>

    </body>
</html>