Sok programozási nyelv külön numerikus típusokat használ a különféle számok ábrázolására, a JavaScriptben viszont csak kettő van:
number: numerikus adattípus dupla pontosságú, 64 bites lebegőpontos formátumban (IEEE 754).
Például: -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 és 500000.bigint: numerikus adattípus, amely egész számokat tud ábrázolni tetszőleges pontosságú formátumban.
Például: -12n, 0n, 4n és 9007199254740991n.Ha tetszőleges pontosságra van szükséged, vagy rendkívül nagy számokkal dolgozol, használd a bigint típust.
Egyébként valószínűleg a number típus a jobb választás.
Van egy beépített globális objektum, a Math, amely különféle kerekítő függvényeket kínál.
A tizedes törteket például lefelé (floor) vagy felfelé (ceil) kerekítheted a legközelebbi egész számra.
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
A JavaScript 6 különböző operátort kínál a számokon végzett alapvető aritmetikai műveletekhez.
+: Az összeadás operátora a számok összegének kiszámítására szolgál.-: A kivonás operátora két szám különbségének kiszámítására szolgál*: A szorzás operátora két szám szorzatának kiszámítására szolgál./: Az osztás operátora két szám elosztására szolgál.2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
%: A maradék operátora egy elvégzett osztás maradékát adja meg.
40 % 4; // => 0
-11 % 4; // => -3
**: A hatványozás operátora egy szám hatványra emelésére szolgál.
4 ** 3; // => 64
4 ** 1 / 2; // => 2
Ha egy sorban több operátort használsz, a JavaScript egy elsőbbségi sorrendet követ, ahogyan ez az elsőbbségi táblázat is mutatja. A mi esetünkre egyszerűsítve: a JavaScript a PEDMAS-szabályt (zárójelek, hatványozás, osztás/szorzás, összeadás/kivonás) használja, amelyet az általános iskolai matekórán tanultunk.
const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45
A rövidített értékadó operátorok rövidebb módot kínálnak arra, hogy aritmetikai műveletet hajts végre egy változón, és az új értéket ugyanannak a változónak add értékül.
Vegyél például két változót, x-et és y-t.
Ekkor az x += y ugyanaz, mint az x = x + y.
Ezt gyakran egy számmal használjuk a y változó helyett.
A többi 5 művelet is elvégezhető hasonló stílusban.
let x = 5;
x += 25; // x is now 30
let y = 31;
y %= 3; // y is now 1
Ebben a feladatban olyan kódot írsz, amely segít egy szabadúszónak egyeztetni az ügyfeleivel bizonyos projektek árairól. Írsz néhány segédfüggvényt, amelyekkel gyorsan kiszámíthatók az ügyfelek költségei.
A ratePerHour változó és a dayRate függvény a pénzhez kapcsolódik.
A mértékegység az időegységre jutó pénzösszeg: rendre óra, illetve nap.
Egy ügyfél felveszi a kapcsolatot a szabadúszóval, hogy érdeklődjön az árai felől. A szabadúszó elmagyarázza, hogy naponta 8 órát dolgozik. A szabadúszó azonban csak a projekt óradíját ismeri. Segíts neki megbecsülni a napidíjat egy adott óradíj alapján.
dayRate(89);
// => 712
A napidíjat nem kell kerekíteni, sem „rögzített” pontosságra váltani.
Egy másik nap egy projektmenedzser felajánlja a szabadúszónak, hogy dolgozzon egy rögzített költségvetésű projekten. A rögzített költségvetés és a szabadúszó óradíja alapján segíts neki kiszámítani, hány napot dolgozna, mire a költségvetés kimerül. Az eredményt lefelé kell kerekíteni a legközelebbi egész számra.
daysInBudget(20000, 89);
// => 28
A szabadúszó ügyfelei gyakran több hónapon át tartó projektekre kérik fel.
Ilyenkor a szabadúszó úgy dönt, hogy minden teljes hónap után kedvezményt ad, a fennmaradó napokat pedig napidíjon számlázza.
A kiváló munka-magánélet egyensúlyod miatt naptári hónaponként csak 22 napot dolgozol, így minden hónapban 22 számlázható nap van.
Segíts neki megbecsülni egy ilyen projekt költségét, ha adott az óradíj, a projektben lévő számlázható napok száma és a havi kedvezmény mértéke.
A kedvezményt mindig számként adjuk át, ahol a 42% 0.42 lesz. Az eredményt felfelé kell kerekíteni a legközelebbi egész számra.
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) JavaScript nyelvet 37 fogalom159 feladat segítségével, valódi emberi mentorálással, mindez ingyen.