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

Dificuldades com o Math.round();

Boa tarde, Alura.

Eu ainda não sei aonde exatamente colocar o 'Math.round();' nesse código. Já tentei enfiar ele em tudo quanto foi canto, mas... sem sucesso.

(PS, sei que "enfiar" não é um termo que se preze, pra um programador, mas... sorry! Coisa de leigo).

var idadeMediaQuandoTemFilhos = 28; var anoAtual = 2016; var quantidadeDeGeracoes = (anoAtual - 1500) / idadeMediaQuandoTemFilhos;

mostra("Desde o ano 1500 até o ano atual, as gerações que se passaram é: " + (anoAtual - 1500) / (Math.round(idadeMediaQuandoTemFilhos)));

9 respostas

Boa tarde Alex,

Basta você entender o que o Math.round faz. Esta função serve para arredondar números decimais. Exemplo:

var x = 10.8;
console.log(Math.round(x));

var y = 10.5;
console.log(Math.round(y));

var z = 10.3;
console.log(Math.round(z));

Você verá que as saídas serão 11, 11 e 10, porque segundo a regra mais básica de arredondamento na matemática, se o valor da primeira casa decimal for maior ou igual a 5 arredonda para cima, e se for menor que 5 arredonda para baixo.

Com isso, no seu código o objetivo é arredondar o resultado final do cálculo, que seria a quantidade de gerações, pois não faz sentido ter 18,46 gerações de "brasileiros" desde que o continente foi descoberto e colonizado. Essa informação precisa ser um número inteiro, como o resultado são 18,46, não da pra dizer que já tiveram 19 gerações, então arredonda para baixo, ficando 18.

Fez sentido agora?

Abraço.

Não! Não, Emerson! Essa é a lógica da matemática, óbvio! Obrigado, de qualquer forma; mas acho que não fui claro... A minha preocupação é com a POSIÇÃO do comando 'Math.round' no meu código. Não 'tô conseguindo saber 'AONDE posicionar' o código Math.round();

Onde você colocou faz todo o sentido. E funciona. Qual a natureza desta dúvida de "onde" colocar a linha de código?

Realmente não tinha ficado claro que a "dúvida" era isso. O que você quer dizer com "tentei colocar ele em tudo que é canto mas sem sucesso...". Onde exatamente você tentou colocar já? Quais são suas opções? Baseado no código que você compartilhou o local de colocar é ali mesmo...

Cara...! Estranho...! Na minha tab aparece: 18.464285714285715

Nada de estranho, o resultado matemático da equação:

(2017 - 1500) / 28

É exatamente esse ai, eu falei 18,46 puramente para resumir. O arredondamento deste número com todas estas casas decimais acabará sendo o mesmo, 18 no final. Enfim, sua dúvida ainda não ficou clara quanto ao trecho de código que tem que colocar o round().

É...?! Só não entendi porque na página não aparece: '18' ao invés de '18.464285714285715'. Mas beleza...! Obrigado, pelo tempo e atenção, Emerson.

Tem que aparecer 18, porque 18 é o resultado da função de arredondamento Math.round() quando você passa como argumento o valor 18.464285714285715. Por isso que aparece 18, é exatamente o que deveria aparecer.

solução!

Acho que entendi sua dúvida, a questão é que não aparece o 18??? certo?

O código realmente está errado, falha minha não ter notado antes, teria que ficar assim:

var idadeMediaQuandoTemFilhos = 28; 
var anoAtual = 2017; 
var quantidadeDeGeracoes = (anoAtual - 1500) / idadeMediaQuandoTemFilhos;

mostra("Desde o ano 1500 até o ano atual, as gerações que se passaram é: " + Math.round(quantidadeDeGeracoes));

É isso que você tem que fazer, o erro está em fazer a conta de novo na hora de exibir. Você já fez o cálculo nas linhas anteriores, só precisa arredondar o valor final, não tem que incluir o cálculo novamente na hora de mostrar.

Ah...! Beleza!!! Obrigado!