869 Stimmen

Wie prüfe ich, ob es sich bei einer Zahl um eine Fließkommazahl oder eine ganze Zahl handelt?

Wie man herausfindet, dass eine Zahl float o integer ?

1.25 --> float  
1 --> integer  
0 --> integer  
0.25 --> float

55 Stimmen

Ich verstehe, worauf Sie hinauswollen, aber nur um das klarzustellen: <nit-pick> In JavaScript gibt es keine unterschiedlichen numerischen Typen Integer und Float. Jede Zahl in JavaScript ist einfach eine Number . </nit-pick>

5 Stimmen

Ist Infinity eine ganze Zahl oder ein nicht ganzzahliger Wert? Die Antworten sind in dieser Hinsicht ziemlich gleichmäßig verteilt.

14 Stimmen

@MikeSamuel Um mathematisch genau zu sein: Da Unendlich keine reelle Zahl ist und alle ganzen Zahlen reelle Zahlen sind, Infinity kann nicht als ganze Zahl betrachtet werden.

20voto

shime Punkte 8290
function isInteger(x) { return typeof x === "number" && isFinite(x) && Math.floor(x) === x; }
function isFloat(x) { return !!(x % 1); }

// give it a spin

isInteger(1.0);        // true
isFloat(1.0);          // false
isFloat(1.2);          // true
isInteger(1.2);        // false
isFloat(1);            // false
isInteger(1);          // true    
isFloat(2e+2);         // false
isInteger(2e+2);       // true
isFloat('1');          // false
isInteger('1');        // false
isFloat(NaN);          // false
isInteger(NaN);        // false
isFloat(null);         // false
isInteger(null);       // false
isFloat(undefined);    // false
isInteger(undefined);  // false

19voto

Tal Liron Punkte 340

Hier sind effiziente Funktionen, die prüfen, ob der Wert eine Zahl ist oder sein kann sicher umgewandelt in eine Nummer:

function isNumber(value) {
    if ((undefined === value) || (null === value)) {
        return false;
    }
    if (typeof value == 'number') {
        return true;
    }
    return !isNaN(value - 0);
}

Und für Ganzzahlen (würde false zurückgeben, wenn der Wert ein Float ist):

function isInteger(value) {
    if ((undefined === value) || (null === value)) {
        return false;
    }
    return value % 1 == 0;
}

Die Effizienz hier ist, dass parseInt (oder parseNumber) vermieden werden, wenn der Wert bereits eine Zahl ist. Beide Parsing-Funktionen immer zuerst in eine Zeichenkette konvertieren und dann versuchen, diese Zeichenkette zu parsen, was eine Verschwendung wäre, wenn der Wert bereits eine Zahl ist.

Vielen Dank an die anderen Beiträge hier, die weitere Ideen zur Optimierung liefern!

17voto

Zetura Punkte 336

2022 Update - Wir könnten einfach die Methoden von Number verwenden.

Prüfen, ob Integer oder Float : Number.isFinite(val)

Prüfen, ob Ganzzahl : Number.isInteger(val)

Prüfen, ob Float (nicht Integer) : !Number.isInteger(val) && Number.isFinite(val)

12voto

Deepak Yadav Punkte 1662
function isInt(n) 
{
    return n != "" && !isNaN(n) && Math.round(n) == n;
}
function isFloat(n){
    return n != "" && !isNaN(n) && Math.round(n) != n;
}

funktioniert in allen Fällen.

8voto

akshay bagade Punkte 999

Wir können prüfen, indem wir isInteger Funktion. d.h. number gibt true zurück und float gibt false zurück

console.log(Number.isInteger(2)),<BR>

Wird true zurückgegeben

console.log(Number.isInteger(2.5))

Gibt false zurück

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X