Muitas linguagens de programação têm tipos numéricos específicos para representar diferentes tipos de números, mas o JavaScript só tem dois:
number: um tipo de dados numérico no formato de vírgula flutuante de precisão dupla de 64 bits (IEEE 754).
Alguns exemplos são -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 e 500000.bigint: um tipo de dados numérico que consegue representar números inteiros no formato de precisão arbitrária.
Alguns exemplos são -12n, 0n, 4n e 9007199254740991n.Se precisares de precisão arbitrária ou de trabalhar com números extremamente grandes, usa o tipo bigint.
Caso contrário, o tipo number é provavelmente a melhor opção.
Existe um objeto global incorporado chamado Math que fornece várias funções de arredondamento.
Por exemplo, podes arredondar por defeito (floor) ou por excesso (ceil) números decimais para os números inteiros mais próximos.
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
O JavaScript fornece 6 operadores diferentes para realizar operações aritméticas básicas com números.
+: O operador de adição serve para encontrar a soma de números.-: O operador de subtração serve para encontrar a diferença entre dois números.*: O operador de multiplicação serve para encontrar o produto de dois números./: O operador de divisão serve para dividir dois números.2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
%: O operador de resto serve para encontrar o resto de uma divisão efetuada.
40 % 4; // => 0
-11 % 4; // => -3
**: O operador de exponenciação serve para elevar um número a uma potência.
4 ** 3; // => 64
4 ** 1 / 2; // => 2
Quando usas vários operadores na mesma linha, o JavaScript segue uma ordem de precedência, como mostra esta tabela de precedência. Para simplificar, no nosso contexto, o JavaScript usa a regra PEDMAS (Parênteses, Expoentes, Divisão/Multiplicação, Adição/Subtração) que aprendemos nas aulas de matemática do ensino básico.
const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45
Os operadores de atribuição abreviados são uma forma mais curta de escrever código que realiza operações aritméticas sobre uma variável e atribui o novo valor à mesma variável.
Por exemplo, considera duas variáveis x e y.
Então, x += y é o mesmo que x = x + y.
Muitas vezes, isto é usado com um número em vez de uma variável y.
As outras 5 operações também podem ser feitas de forma semelhante.
let x = 5;
x += 25; // x is now 30
let y = 31;
y %= 3; // y is now 1
Neste exercício vais escrever código para ajudar um freelancer a comunicar com os seus clientes sobre os preços de determinados projetos. Vais escrever algumas funções utilitárias para calcular rapidamente os custos para os clientes.
A variável ratePerHour e a função dayRate estão relacionadas com dinheiro.
As unidades de medida são dinheiro por unidade de tempo: horas e dias, respetivamente.
Um cliente contacta o freelancer para perguntar pelas suas taxas. O freelancer explica que trabalha 8 horas por dia. No entanto, o freelancer só conhece a sua taxa horária para o projeto. Ajuda-o a estimar uma taxa diária a partir de uma taxa horária.
dayRate(89);
// => 712
A taxa diária não precisa de ser arredondada nem alterada para uma precisão "fixa".
Noutro dia, um gestor de projeto propõe ao freelancer trabalhar num projeto com um orçamento fixo. Dado o orçamento fixo e a taxa horária do freelancer, ajuda-o a calcular o número de dias que trabalharia até o orçamento se esgotar. O resultado tem de ser arredondado por defeito para o número inteiro mais próximo.
daysInBudget(20000, 89);
// => 28
Muitas vezes, os clientes do freelancer contratam-no para projetos que se estendem por vários meses.
Nestes casos, o freelancer decide oferecer um desconto por cada mês completo, e os dias restantes são faturados à taxa diária.
O teu excelente equilíbrio entre a vida pessoal e o trabalho faz com que só trabalhes 22 dias em cada mês civil, por isso cada mês tem 22 dias faturáveis.
Ajuda-o a estimar o custo desses projetos, dada uma taxa horária, o número de dias faturáveis que o projeto inclui e uma taxa de desconto mensal.
O desconto é sempre passado como um número, em que 42% se torna 0.42. O resultado tem de ser arredondado por excesso para o número inteiro mais próximo.
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.