Start · Sprachen · PHP · Referenz · variant_round

variant_round

Funktion

Rundet einen <code>VARIANT</code>-Wert auf die angegebene Anzahl an Nachkommastellen und gibt das Ergebnis als neues Variant zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

variant_round(mixed $left, int $decimals): mixed

Beschreibung

variant_round() ist eine Funktion aus der COM/VARIANT-Erweiterung von PHP und arbeitet analog zur bekannten round()-Funktion, jedoch speziell für Windows-COM-VARIANT-Datentypen. Sie rundet den übergebenen Variant-Wert auf die gewünschte Anzahl von Dezimalstellen.

Die Funktion ist primär dann sinnvoll, wenn man mit COM-Objekten (z. B. Microsoft Office-Automatisierung via COM unter Windows) arbeitet und Rundungsoperationen direkt auf Variant-Ebene durchführen möchte, anstatt den Wert vorher in einen PHP-Basistyp zu konvertieren. Dadurch bleibt die Typsicherheit auf COM-Ebene erhalten.

Das Ergebnis ist wieder ein VARIANT-Objekt, das nahtlos in weitere COM-Operationen eingespeist werden kann. Für normale PHP-Floats sollte stattdessen die Standardfunktion round() verwendet werden.

Parameter

Name Typ Default Beschreibung
$left Pflicht mixed Der zu rundende Wert, typischerweise ein VARIANT-Objekt oder ein numerischer Wert, der implizit in ein Variant konvertiert werden kann.
$decimals Pflicht int Die Anzahl der Nachkommastellen, auf die gerundet werden soll. Ein Wert von 0 rundet auf eine ganze Zahl, positive Werte geben die Anzahl der Dezimalstellen an.

Rückgabewert

Typ
mixed
Beschreibung
Gibt ein VARIANT-Objekt zurück, das den gerundeten Wert enthält. Im Fehlerfall (z. B. bei ungültigen Eingaben) wird eine com_exception ausgelöst.

Beispiele

Einfaches Runden eines Variant-Wertes

<?php
// Voraussetzung: PHP unter Windows mit aktivierter COM-Erweiterung
$value = new VARIANT(3.14159, VT_R8);
$rounded = variant_round($value, 2);
echo $rounded; // Gibt 3.14 aus
3.14

Runden auf ganze Zahlen im COM-Kontext

<?php
// Voraussetzung: PHP unter Windows mit aktivierter COM-Erweiterung
$value = new VARIANT(7.89, VT_R8);
$rounded = variant_round($value, 0);
echo $rounded; // Gibt 8 aus

// Vergleich mit PHP-Standardfunktion (ohne COM)
$phpFloat = 7.89;
echo round($phpFloat, 0); // Ebenfalls 8
8 8

// Wichtig · Fallstricke

Plattformabhängigkeit: variant_round() ist ausschließlich unter Windows verfügbar, da sie Teil der COM-Erweiterung ist. Auf Linux- oder macOS-Systemen steht die Funktion nicht zur Verfügung. Für plattformübergreifende Projekte sollte round() verwendet werden.

Fehlerbehandlung: Bei ungültigen oder nicht konvertierbaren Eingabewerten kann eine com_exception geworfen werden. Es empfiehlt sich, Aufrufe in einem try/catch-Block zu kapseln.

Typkonvertierung: Wenn ein gewöhnlicher PHP-Skalar (int, float) übergeben wird, versucht PHP, ihn intern in ein Variant umzuwandeln. Das Ergebnis ist dennoch ein VARIANT-Objekt und sollte bei Bedarf explizit zurückkonvertiert werden.