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.
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.
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.
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.
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.
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.
<!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
Mathcomnew, ou chamá-lo como função - Levar
-1.5até -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
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 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