De nombreux langages de programmation ont des types numériques spécifiques pour représenter différents types de nombres, mais JavaScript n'en a que deux :
number : un type de données numérique au format à virgule flottante double précision sur 64 bits (IEEE 754).
Par exemple -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 et 500000.bigint : un type de données numérique qui peut représenter des entiers au format à précision arbitraire.
Par exemple -12n, 0n, 4n et 9007199254740991n.Si tu as besoin d'une précision arbitraire ou si tu travailles avec des nombres extrêmement grands, utilise le type bigint.
Sinon, le type number est probablement le meilleur choix.
Il existe un objet global intégré appelé Math qui fournit diverses fonctions d'arrondi.
Par exemple, tu peux arrondir à l'inférieur (floor) ou au supérieur (ceil) des nombres décimaux à l'entier le plus proche.
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
JavaScript fournit 6 opérateurs différents pour effectuer les opérations arithmétiques de base sur les nombres.
+ : l'opérateur d'addition sert à calculer la somme de nombres.- : l'opérateur de soustraction sert à calculer la différence entre deux nombres* : l'opérateur de multiplication sert à calculer le produit de deux nombres./ : l'opérateur de division sert à diviser deux nombres.2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
% : l'opérateur de modulo sert à calculer le reste d'une division.
40 % 4; // => 0
-11 % 4; // => -3
** : l'opérateur d'exponentiation sert à élever un nombre à une puissance.
4 ** 3; // => 64
4 ** 1 / 2; // => 2
Lorsque plusieurs opérateurs sont utilisés sur une même ligne, JavaScript suit un ordre de priorité, comme indiqué dans ce tableau de priorité. Pour simplifier dans notre contexte, JavaScript applique la règle PEDMAS (parenthèses, exposants, division/multiplication, addition/soustraction) que l'on a apprise en cours de mathématiques à l'école primaire.
const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45
Les opérateurs d'affectation raccourcis permettent d'écrire plus brièvement du code qui effectue des opérations arithmétiques sur une variable et qui affecte la nouvelle valeur à cette même variable.
Par exemple, prenons deux variables x et y.
Alors, x += y équivaut à x = x + y.
Souvent, on utilise un nombre à la place de la variable y.
Les 5 autres opérations peuvent aussi s'écrire de la même façon.
let x = 5;
x += 25; // x is now 30
let y = 31;
y %= 3; // y is now 1
Dans cet exercice, tu vas écrire du code pour aider un freelance à communiquer avec ses clients au sujet du prix de certains projets. Tu vas écrire quelques fonctions utilitaires pour calculer rapidement le coût pour les clients.
La variable ratePerHour et la fonction dayRate concernent de l'argent.
Les unités de mesure sont des montants d'argent par unité de temps : respectivement des heures et des jours.
Un client contacte le freelance pour se renseigner sur ses tarifs. Le freelance explique qu'il travaille 8 heures par jour. Cependant, le freelance ne connaît que son tarif horaire pour le projet. Aide-le à estimer un tarif journalier à partir d'un tarif horaire.
dayRate(89);
// => 712
Le tarif journalier n'a pas besoin d'être arrondi ni ramené à une précision « fixe ».
Un autre jour, un chef de projet propose au freelance de travailler sur un projet avec un budget fixe. Étant donné le budget fixe et le tarif horaire du freelance, aide-le à calculer le nombre de jours qu'il travaillerait jusqu'à épuisement du budget. Le résultat doit être arrondi à l'entier inférieur.
daysInBudget(20000, 89);
// => 28
Souvent, les clients du freelance l'engagent pour des projets qui s'étalent sur plusieurs mois.
Dans ce cas, le freelance décide d'accorder une remise pour chaque mois complet, et les jours restants sont facturés au tarif journalier.
Ton excellent équilibre entre vie professionnelle et vie personnelle fait que tu ne travailles que 22 jours par mois calendaire, donc chaque mois compte 22 jours facturables.
Aide-le à estimer le coût de ce type de projets, à partir d'un tarif horaire, du nombre de jours facturables du projet et d'un taux de remise mensuel.
La remise est toujours passée sous forme de nombre, où 42% devient 0.42. Le résultat doit être arrondi à l'entier supérieur.
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.