Carregando...

O objeto Math

O talão da loja de molduras não imprime casas decimais. A fotografia mede 7.6 cm, sobra um resto de passe-partout de 7.2 cm, a foto escorregou 3.8 cm para a esquerda da marca, e há três varetas de 12, 9 e 15 cm. Estas medidas ficam onde estão. Muda só o inteiro que pedes ao objeto Math, que já existe antes de escreveres a primeira linha.

Não há objeto para construir

Na aritmética o sinal ficava entre dois valores e a conta acabava. Na página das datas montavas um instante com new Date e depois lias uma peça. Aqui não montas nada. new Math() falha, e chamar Math como se fosse uma função também falha. Dizes o nome do objeto, dizes o trabalho, e entregas um número que já tens.

A folha é desta banca

Não é um glossário para decorar. Cada linha é uma decisão da loja: talão, corte, compra, desvio para a esquerda, vareta mais comprida, vareta mais curta. A chamada entrega um inteiro e deixa a medida na variável. O 8 só fica lá se o guardares tu.

📊 Decisões desta banca

Trabalho Decisão Número desta banca Onde a mão escorrega
Math.round centímetro inteiro mais próximo de 7.6 8 uma metade num número negativo
Math.floor o que realmente cortas de 7.2 7 usar o mesmo no desvio negativo
Math.ceil o que compras para cobrir 7.2 8 empurrar um número que já era inteiro
Math.trunc deitar fora a casa de -3.8 em direção a zero -3 esperar o mesmo que o passo para baixo
Math.max a mais comprida de 12, 9 e 15 15 entregar um array
Math.min a mais curta dessas varetas 9 o mesmo erro do array

À direita do zero, um resto de metade sobe: 0.5 fica 1. À esquerda, essa mesma metade não desce mais. Caminha para mais infinito, por isso -1.5 assenta em -1 e não em -2. Na escola, «o cinco sobe» ouve-se quase só com positivos. O passo para o inteiro menor é outro ofício. Vais usá-lo no desvio, não no talão da largura.

O talão da largura

O papel não leva a casa decimal e a loja quer o centímetro inteiro mais próximo. A chamada não guarda esse inteiro na variável. Se precisares do 8 mais à frente, tens de o guardar tu.

Centímetro do talão

javascript
let width = 7.6;
console.log(Math.round(width));

No talão fica 8. A variável width continua 7.6, porque o 8 não foi escrito de volta. Uma largura de 7.5 também subiria a 8. Leva a regra da metade até -1.5: não cais em -2. A metade caminha para o lado positivo e o inteiro é -1.

Cortar ou cobrir

javascript
let scrap = 7.2;
console.log(Math.floor(scrap));
console.log(Math.ceil(scrap));

O corte pára em 7. Duas décimas não chegam para mais um centímetro de cartão. Se o resto tem de ficar tapado sem folga, 7 deixa um buraco e compras 8. Se o resto já fosse um 7 certo, as duas chamadas ficavam em 7. Só a casa decimal separa o corte da compra.

Desvio para a esquerda

javascript
let nudge = -3.8;
console.log(Math.trunc(nudge));
console.log(Math.floor(nudge));

O sinal negativo fica nos dois casos. Isto não vira uma distância sem sinal. Tirar a casa decimal caminha para zero: de -3.8 passas a -3. O passo para baixo não se pode aproximar de zero. O inteiro que não ultrapassa -3.8 é -4. Trocar os dois gestos desloca a moldura um centímetro.

A mais comprida e a mais curta

javascript
console.log(Math.max(12, 9, 15));
console.log(Math.min(12, 9, 15));

Três varetas, três argumentos separados. A mais comprida é 15 e a mais curta é 9. Se fechares os três números num array e entregares só esse embrulho, o método não o abre. Sai NaN. Não houve comparação.

Uma gaveta de 1 a 6

javascript
let drawer = Math.floor(Math.random() * 6) + 1;
console.log(drawer >= 1 && drawer <= 6);
console.log(Math.random() < 1);

Um sorteio cru nunca toca em 1. Parte de 0 e fica abaixo de 1. Multiplicas por 6 e o intervalo passa a ir de 0 até menos de 6. O passo para baixo só deixa 0 a 5. O +1 a seguir coloca a gaveta entre 1 e 6, por isso a primeira linha é verdadeira em todas as execuções. A segunda linha é outro sorteio, não o número da gaveta, e também fica abaixo de 1. Se somares 1 antes desse passo, ou se o esqueceres, a gaveta cai em 0 ou em 7.

O círculo na senha

A boca da moldura é um círculo de raio 5. A área é π vezes o raio vezes o raio. A senha não mostra a decimal longa. Primeiro aproxima a área de um inteiro, e é esse inteiro que o parágrafo escreve.

Senha do círculo

html
<!DOCTYPE html>
<html>
<head>
<title>math — page</title>
</head>
<body>
<p id="ticket">…</p>
<script>
let radius = 5;
let area = Math.PI * radius * radius;
let shown = Math.round(area);
let box = document.getElementById("ticket");
box.textContent = shown;
</script>
</body>
</html>

Quem lê o parágrafo vê 79. π vezes 25 anda perto de 78.54, e a aproximação sobe a 79. O 5 é o raio e o 25 é o raio vezes ele próprio. Nenhum dos dois é o texto do parágrafo.

Antes de fechares a caixa

Começa pelo lado esquerdo do zero, que é onde a moldura fica torta sem aviso. Em direção a zero, -3.8 pára em -3. Para baixo, pára em -4, e -1.5 não chega a -2. O resto da banca lê-se de seguida: talão 8 com a variável ainda em 7.6, resto cortado a 7 e coberto com 8, varetas 15 e 9, parágrafo 79, gaveta de 1 a 6 só se o +1 vier no fim.

Corre, e a moldura fica errada

  • Construir Math com new, ou chamá-lo como função
  • Levar -1.5 até -2 por hábito da escola
  • Em -3.8, trocar o caminho para zero com o passo para baixo
  • Meter 12, 9 e 15 num array e passar só esse array
  • Esperar que algum sorteio valha exatamente 1
  • Subir um número que já era inteiro, só porque o trabalho se chama cobrir

Leva a direção, não uma segunda lista de nomes. À esquerda do zero, tirar a decimal e descer não se encontram. A seguir vem o DOM HTML.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
8
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo