JavaScript:
Afronden van getallen
Hoe:
Hier is hoe je nummers afrondt in JavaScript met Math.round()
, Math.ceil()
, en Math.floor()
:
let origineelNummer = 2.567;
let naarBenedenAfgerond = Math.floor(origineelNummer); // 2
let naarBovenAfgerond = Math.ceil(origineelNummer); // 3
let afgerond = Math.round(origineelNummer); // 3 (aangezien .567 meer is dan .5)
console.log(naarBenedenAfgerond); // Print: 2
console.log(naarBovenAfgerond); // Print: 3
console.log(afgerond); // Print: 3
Om tot een bepaald aantal decimalen te fixeren, gebruik toFixed()
:
let tweeDecimalen = origineelNummer.toFixed(2); // "2.57" (geeft een string terug)
console.log(tweeDecimalen); // Print: "2.57"
Zet de string terug naar een nummer met een unair plusje of Number()
:
let weerEenNummer = +tweeDecimalen; // 2.57
console.log(weerEenNummer); // Print: 2.57
Diepe Duik
Nummers afronden is niet nieuw; het is zo oud als de nummers zelf. In JavaScript gebruikt Math.round()
de “ronde helft omhoog” tie-breaking: als het fractiegedeelte 0.5 is, wordt er afgerond naar het dichtstbijzijnde even nummer.
Voor meer controle is toFixed()
misschien je beste optie, maar onthoud dat het een string teruggeeft. Terug converteren naar een nummer kan een extra stap zijn, maar zorgt ervoor dat je blijft werken met numerieke typen.
Alternatieven? Bibliotheken als lodash
bieden _.round(number, [precision=0])
voor meer genuanceerde controle. Of, de nieuwere Intl.NumberFormat
geeft je hoogprecieze formatting, verder dan alleen afronden.
Over precisie gesproken, pas op voor de eigenaardigheden van drijvende-kommagetallen in JavaScript. 0.1 + 0.2
is niet exact gelijk aan 0.3
vanwege hoe nummers worden opgeslagen. Soms is afronden noodzakelijk om dergelijke drijvende-kommagetallenfouten te corrigeren.
Zie Ook
- Mozilla’s Math documentatie: MDN Web Docs
- Financieel afronden met
Intl.NumberFormat
: ECMAScript Internationalization API lodash
afronden: Lodash Docs