W3docs

is_double()

is_double() ist ein veralteter Alias von is_float() in PHP. Er prüft, ob eine Variable ein Float ist. Seit PHP 8.0 wurde die Funktion entfernt.

Einführung

is_double() war ein Alias von is_float(), der prüft, ob eine Variable eine Gleitkommazahl enthält. Ein float (auch double genannt) ist der Datentyp, den PHP für Zahlen mit einem Nachkommaanteil verwendet, z. B. 3.14 oder 1.0e6.

Wichtig: is_double() wurde vor langer Zeit als veraltet markiert und in PHP 8.0.0 entfernt. Verwenden Sie in jeder PHP-Version is_float() — die Funktion ist verhaltensidentisch, wird unterstützt und ist besser lesbar. Diese Seite dokumentiert is_double(), damit Sie veralteten Code erkennen und migrieren können.

Dieses Kapitel behandelt die Syntax, was als Float gilt, das Verhalten des Rückgabewerts, den empfohlenen Ersatz und häufige Fallstricke.

Syntax

is_double(mixed $value): bool

Die Funktion nimmt einen Parameter entgegen, $value, die zu prüfende Variable, und gibt true zurück, wenn $value vom Typ float ist, andernfalls false. Die Prüfung erfolgt auf den Typ, nicht darauf, ob die Zahl dezimal aussieht — siehe die Fallstricke unten.

Was als Float gilt

is_double() (und is_float()) gibt nur dann true zurück, wenn der Laufzeittyp der Variable float ist. Numerische Strings und ganzzahlige Integer sind keine Floats:

<?php
var_dump(is_float(3.14));    // bool(true)
var_dump(is_float(1.0e6));   // bool(true)  — scientific notation is a float
var_dump(is_float(42));      // bool(false) — this is an int
var_dump(is_float("3.14"));  // bool(false) — this is a string
var_dump(is_float(10 / 2));  // bool(true)  — division always yields a float in PHP
?>

Beachten Sie, dass 10 / 2 true ergibt: In PHP liefert der Operator / immer einen Float, auch wenn das Ergebnis mathematisch eine ganze Zahl ist.

Anwendungsbeispiel

Da die Ausgabe von boolean-Werten irreführend sein kann (true gibt 1 aus, false gibt nichts aus), verwenden Sie var_dump(), um das tatsächliche Ergebnis zu sehen:

php— editable, runs on the server

$price ist ein echter Float, daher ist die Prüfung true. $count ist ein Integer und $label ist ein String, daher sind beide false.

Der moderne Ersatz: is_float()

Der Ersatz von is_double() ist eine einfache Umbenennung — Argumente und Rückgabewert sind identisch:

<?php
// Legacy (removed in PHP 8.0)
// if (is_double($value)) { ... }

// Modern, supported everywhere
$value = 9.99;
if (is_float($value)) {
    echo "It's a float";
}
?>

Wenn Sie Zahlen akzeptieren müssen, die möglicherweise ein Float, ein Integer oder ein numerischer String sind (zum Beispiel Formulareingaben), verwenden Sie stattdessen is_numeric() oder konvertieren Sie mit floatval().

Häufige Fallstricke

  • Numerische Strings bestehen die Prüfung nicht. is_float("3.14") ist false. Benutzereingaben aus Formularen oder $_GET kommen als Strings an; validieren Sie zunächst mit is_numeric() und konvertieren Sie dann mit floatval().
  • Floats nicht auf exakte Gleichheit vergleichen. Aufgrund von Binärrundung ist 0.1 + 0.2 == 0.3 false. Vergleichen Sie stattdessen mit einer kleinen Toleranz.
  • is_double ist in PHP 8+ nicht mehr verfügbar. Der Aufruf in PHP 8.0 oder höher erzeugt einen fatalen Fehler: Error: Call to undefined function is_double().

Siehe auch

  • is_float() — die aktuelle, unterstützte Funktion.
  • is_int() — prüft auf Integer.
  • is_numeric() — prüft auf Zahlen oder numerische Strings.
  • floatval() — konvertiert einen Wert in einen Float.
  • gettype() — gibt den Typ einer Variable direkt aus.

Fazit

is_double() ist ein entfernter Alias von is_float(). Verwenden Sie für neuen Code immer is_float(), um zu prüfen, ob ein Wert eine Gleitkommazahl ist, und behalten Sie is_double() nur im Gedächtnis, um veraltete Projekte bei der Migration auf PHP 8 oder höher aktualisieren zu können.

Übung

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