fn:round

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

   

Kategorie: Rundungsfunktionen für numerische Typen

Herkunft: XPath 1.0

Rückgabewert: Eine Zahl, numeric; die nächste größere oder kleinere benach­barte Ganzzahl einer Eingabezahl nach erfolgter Rundung, aber ohne Ände­rung des Datentyps. In XPath 1.0 ist der Rückgabewert vom Typ number.

Aufruf/Argumente:

fn:round($eingabewert)

$eingabewert:
Optional. Die zu rundende Zahl. In XPath 2.0 muss diese einem der numerischen Datentypen oder einem hiervon abgeleiteten Typ ent­sprechen. Gegebenenfalls wird eine Typ-Promotion versucht.

Verwendungszweck:

Die Funktion fn:round() rundet eine ihr überge­bene Dezimalzahl zur nächstgelegenen Ganzzahl auf oder ab. Der Datentyp der Zahl bleibt dabei erhalten. Falls es sich bei der Eingabezahl bereits um eine Ganzzahl handelt, bleibt der Wert unverändert. Ist der Eingangstyp ein von einem der numerischen Basistypen abgeleiteter Typ (derived type) so wird das Rundungsergebnis mit dem entsprechenden Basistyp typisiert zurückgegeben.

Hat der Eingabewert den Typ xs:untypedAtomic, so wird dieser mittels Typ-Promotion zu xs:double umgewidmet.

Ist der Typ des Eingabe­werts nicht xs:untypedAtomic oder einer der vier numerischen Typen xs:float, xs:double, xs:decimal oder xs:integer bzw. ein von diesen abgeleiteten Typ, so wird ein Typfehler gemeldet.

Wird der Funktion die leere Sequenz übergeben, so gibt sie ebenfalls die leere Sequenz zurück. Ist (beim Eingangstyp xs:double oder xs:float) der Ein­gangswert NaN, so wird ebenfalls NaN zurückgegeben.

Bei Rundungen auf 0 fließt die Rundungsrichtung in das Ergebnis ein. So ergibt ein von einer Zahl größer -0,5 gegen 0 aufgerundeter Wert -0 (negative zero), ein von einer Zahl kleiner +0,5 gegen 0 abgerundeter Wert dagegen +0 (positive zero). Positive und negative Nullwerte vom Typ xs:double oder xs:float blei­ben als Eingabewerte ebenso unverändert wie positiv Unendlich INF oder negativ Unendlich -INF.

Verhalten unter XPath 1.0:

In XPath 1.0 wird für round() für nicht-numerische Eingangswerte eine implizite Typumwand­lung gemäß der Funktion number() vorgenommen. Ist der überge­bene Wert in XPath 1.0 ein leerer String, so ist das Ergebnis NaN. (Achtung – die vergleichbare Übergabe eine leere Sequenz unter XPath 2.0 ergibt eine leere Sequenz.)

Beispiele:

Funktionsaufruf Ergebnis

fn:round(-0.499999)

-0 (negative zero)

fn:round(0.499999)

 0 (positive zero)

fn:round(1.499999)

 1

fn:round(1.5)

 2

fn:round(1.1)

 1

fn:round(2.0)

 2

fn:round(-1.1)

-1

fn:round(-2.5)

-2

fn:round('string')

Typfehler in XPath 2.0

round('string') (XPath 1.0)

NaN in XPath 1.0

Tabelle: Beispiele für den Aufruf von fn:round().

Funktionsdefinition:

XPath 1.0:

round(number)=> number

XPath 2.0:

fn:round($arg as numeric?) as numeric?

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn