Ako zistiť, či je číslo plávajúce
alebo celé
?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
Vyskúšajte tieto funkcie, aby ste otestovali, či je hodnota primitívnou hodnotou čísla, ktorá nemá zlomkovú časť a je v medziach veľkosti, ktorú možno reprezentovať ako presné celé číslo.
function isFloat(n) {
return n === +n && n !== (n|0);
}
function isInteger(n) {
return n === +n && n === (n|0);
}
Ako už spomenuli iní, v JS máte len dvojnásobok. Ako teda definujete číslo ako celé číslo? Stačí skontrolovať, či sa zaokrúhlené číslo rovná sebe samému:
function isInteger(f) {
return typeof(f)==="number" && Math.round(f) == f;
}
function isFloat(f) { return typeof(f)==="number" && !isInteger(f); }
Záleží na tom, čo chcete dosiahnuť. Ak chcete emulovať silne typované jazyky, potom odporúčam, aby ste to neskúšali. Ako už spomenuli ostatní, všetky čísla majú rovnakú reprezentáciu (rovnaký typ).
Použitie niečoho takého, ako poskytol Claudiu:
isInteger( 1.0 )
-> true
čo vyzerá dobre pre zdravý rozum, ale v niečom ako C by ste dostali false