Ako skontrolujem, či je číslo float alebo integer?

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);
}
Komentáre (22)

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); }
Komentáre (3)

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

Komentáre (0)