Zaokrouhlit na celé číslo může být celkem častá akce, zvláště pokud počítáte layout stránky dynamicky.
//zobraz 3 LI vedle sebe v jedné řádce
$('li').width($(window).width() / 3);
Jelikož DOM nemá moc rád desetinná čísla v nastavení pixelů (i když u zařízení s vyšším DPR mohou být „půl-pixely“ užitečné), je dobré spočtenou velikost zaokrouhlit:
//zobraz 3 LI vedle sebe v jedné řádce
$('li').width(Math.round($(window).width() / 3));
Někdo ale rád používá parseInt pro jeho jednoduchost:
//zobraz 3 LI vedle sebe v jedné řádce
$('li').width(parseInt($(window).width() / 3));
Obliba a domnělá výkonnost funkce parseInt bude pravdpodobně v tom, že Firefox (který díky Firebugu dříve používala převážná většina vývojářů) je skutečně ve funkci parseInt rychlejší než s Math.round().
Nicméně v dnešní době nemůžeme upřednostňovat jeden prohlížeč (a zvláště ne Firefox, který se bohužel řadí mezi jeden z nejméně rozšířených) a jednoduchým spuštěním testu se dozvíme, že desktopový Firefox je jediný a ostatní browsery vychází skoro nastejno (Safari, IE, iPhone) a nebo je parseInt() výrazně pomalejší (Chrome, Android) – v případě Chrome dokonce desetkrát pomalejší.
Je to tím, že při použití parseInt() je potřeba nejprve desetiné číslo převést na řetězec a poté z něj vyparsovat čísla konče tečkou nebo čárkou. Probíhají tedy (zbytečně) dvě operace s řetězci, když vám stačí pracovat s čísly.
Ještě jsem našel jeden způsob a tím je použití metody Number.toFixed():
//zobraz 3 LI vedle sebe v jedné řádce
$('li').width(
new Number(
new Number(
$(window).width() / 3
).toFixed(0)
).valueOf()
);
Nicméně tahle metoda je o pár procent ještě pomalejší než parseInt(), protože metoda musí dvakrát vytvořit nový objekt Number. Sice by se dal upravit a trochu zrychlit, ale pořád to není nic proti Math.Round():
//zobraz 3 LI vedle sebe v jedné řádce
$('li').width(
+(
$(window).width() / 3
).toFixed(0)
);
Shrnutí
Pokud si nejste 100% jisti, používejte metody na to, na co jsou určeny – tedy parseInt() pro převod řetězce na číslo a Math.round() na zaokrouhlování.