W3docs

is_float()

Die Funktion is_float() in PHP prüft, ob eine Variable vom Typ float ist. Ein float ist ein Datentyp, der eine Dezimalzahl darstellt.

Einführung

is_float() ist eine eingebaute PHP-Funktion, die prüft, ob eine Variable einen Gleitkommazahlenwert enthält (eine Zahl mit Dezimalanteil, wie 3.14). Sie gibt einen boolean zurück und ist daher der Standardweg, um zu bestätigen, dass ein Wert ein float ist, bevor Sie float-spezifische Logik darauf anwenden.

Ein wichtiger Punkt vorab: is_float() prüft den Typ der Variable, nicht ihren mathematischen Wert. Die Ganzzahl 5 und der float 5.0 sind wertgleich, aber nur 5.0 ist ein float. "3.14" (eine Zeichenkette aus Ziffern) ist kein float — auch wenn es so aussieht.

Diese Seite behandelt die Syntax, häufige Fälle und Überraschungen, wie sich is_float() von verwandten Funktionen unterscheidet und wann Sie diese Funktion tatsächlich einsetzen würden.

Syntax

is_float(mixed $value): bool
TeilBedeutung
$valueDie zu prüfende Variable. Jeder Typ wird akzeptiert.
Rückgabewerttrue, wenn $value vom Typ float ist, andernfalls false.

is_double() ist ein Alias von is_float() — sie verhalten sich identisch; verwenden Sie also den Namen, der für Sie besser lesbar ist.

Einfaches Beispiel

php— editable, runs on the server

Wenn Sie einen boolean mit echo ausgeben, gibt PHP 1 für true und einen leeren string für false aus — deshalb sieht die zweite Zeile leer aus. Um eine klare Beschriftung zu sehen, verwenden Sie stattdessen var_dump():

<?php
var_dump(is_float(3.14));   // bool(true)
var_dump(is_float(42));     // bool(false)
?>

Was als float gilt (und was nicht)

Der größte Fallstrick ist, dass ein numerischer string kein float ist. is_float() gibt nur dann true zurück, wenn Werte tatsächlich mit dem Typ float gespeichert sind.

<?php
var_dump(is_float(3.14));      // bool(true)  — float literal
var_dump(is_float(1.5e3));     // bool(true)  — scientific notation = 1500.0
var_dump(is_float(0.0));       // bool(true)  — zero is still a float
var_dump(is_float(10));        // bool(false) — integer, not float
var_dump(is_float("3.14"));    // bool(false) — string, even though it looks like one
var_dump(is_float(3.14 + 1));  // bool(true)  — float arithmetic yields a float
var_dump(is_float(10 / 3));    // bool(true)  — division produces a float
?>

Beachten Sie, dass 10 / 3 ein float ist, obwohl beide Operanden Ganzzahlen sind: PHP-Division gibt einen float zurück, wenn das Ergebnis keine ganze Zahl ist.

Umgang mit numerischen Strings

Wenn Ihr Wert ein numerischer string sein könnte (z. B. aus $_GET, $_POST oder einer CSV-Datei), gibt is_float() false zurück. Verwenden Sie is_numeric(), um numerische Strings zu erkennen, oder konvertieren Sie zuerst:

<?php
$input = "9.99";  // e.g. a price submitted from a form

var_dump(is_float($input));            // bool(false) — it's a string
var_dump(is_numeric($input));          // bool(true)  — looks like a number
var_dump(is_float((float) $input));    // bool(true)  — cast it first
?>

Für eine vollständige Behandlung der Erkennung numerischer Eingaben, siehe is_numeric() und PHP-Datentypen.

Eine praktische Absicherung

Ein häufiger Anwendungsfall ist die Validierung eines Werts, bevor Rechenoperationen durchgeführt werden, die nur bei einem float sinnvoll sind:

<?php
function applyDiscount(mixed $price, float $rate): float
{
    if (!is_float($price)) {
        // normalize numeric strings/ints into a float
        $price = (float) $price;
    }
    return $price - ($price * $rate);
}

echo applyDiscount(49.99, 0.10) . "\n";  // 44.991
echo applyDiscount("20", 0.25) . "\n";   // 15
?>

Verwandte Typ-Prüffunktionen

FunktionGibt true zurück, wenn der Wert…
is_float() / is_double()ein float ist (3.14, 1.5e3)
is_int()eine Ganzzahl ist (42)
is_string()ein string ist ("3.14")
is_numeric()eine Zahl oder ein numerischer string ist
is_bool()ein boolean ist (true/false)

Wenn Sie nur wissen möchten, ob es sich um irgendeine Art von Zahl handelt, einschließlich einer String-Version, greifen Sie auf is_numeric() zurück. Wenn Sie speziell den float-Typ benötigen, verwenden Sie is_float().

Fazit

is_float() (und sein Alias is_double()) prüft, ob der Typ einer Variable float ist, und gibt einen boolean zurück. Denken Sie daran, dass der Typ geprüft wird, nicht der Wert: Ganzzahlen und numerische Strings geben beide false zurück, auch wenn sie wie Dezimalzahlen aussehen. Wenn Sie mit Benutzereingaben arbeiten — die als Strings ankommen — kombinieren Sie die Funktion mit is_numeric() oder konvertieren Sie mit (float), bevor Sie einen Wert als float behandeln.

Übungen

Übung
Was ist die Funktion von 'is_float' in PHP?
Was ist die Funktion von 'is_float' in PHP?
Was this page helpful?