round()-Funktion |
Diese Funktion gibt die Ganzzahl zurück, die am nächsten beim Argument liegt.
Beschreibung
Wenn zwei Zahlen gleich nahe beim Argument liegen (1 und 2 liegen gleich nahe bei 1.5), wird die Zahl zurückgegeben, die am nächsten bei positiv unendlich liegt. Verschiedene Argumentwerte werden wie folgt behandelt: Hat das Argument den Wert NaN (Not a Number – keine Zahl), gibt die Funktion round() den Wert NaN zurück. Entspricht das Argument dem Wert positiv unendlich, wird positiv unendlich zurückgegeben. Entspricht das Argument dem Wert negativ unendlich, wird negativ unendlich zurückgegeben. Entspricht das Argument dem Wert positiv Null, wird positiv Null zurückgegeben. Entspricht das Argument dem Wert negativ Null, wird negativ Null zurückgegeben. Liegt das Argument zwischen null und -0,5, wird negativ Null zurückgegeben.
Eingaben
Eine Zahl. Wenn das Argument keine Zahl ist, wird es in eine Zahl umgewandelt als wäre es an die Funktion number() übergeben worden.
Ausgabe
Die Ganzzahl, die am nächsten beim Argumentwert liegt. Spezielle Fälle werden gemäß der Beschreibung in diesem Abschnitt behandelt.
Definition
XPath-Abschnitt 4.4, Zahlenfunktionen
Beispiel
Das folgende Stylesheet demonstriert die Ergebnisse, wenn die Funktion round() auf eine Vielzahl verschiedener Werte angewendet wird. Als Eingabe dient das folgende XML-Dokument:
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
Hier das Stylesheet, das die Funktion round() verwendet:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:months="Lookup table for month names">

      <months:name sequence="01">January</months:name>
      <months:name sequence="02">February</months:name>
      <months:name sequence="03">March</months:name>
      <months:name sequence="04">April</months:name>
      <months:name sequence="05">May</months:name>
      <months:name sequence="06">June</months:name>
      <months:name sequence="07">July</months:name>
      <months:name sequence="08">August</months:name>
      <months:name sequence="09">September</months:name>
      <months:name sequence="10">October</months:name>
      <months:name sequence="11">November</months:name>
      <months:name sequence="12">December</months:name>

      <xsl:output method="text"/>

      <xsl:variable name="newline">
    <xsl:text>
    </xsl:text>
      </xsl:variable>

      <xsl:template match="/">
        <xsl:value-of select="$newline"/>
        <xsl:text>Tests of the round() function:</xsl:text>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>
        <xsl:text>   "round('7.983')" = </xsl:text>
        <xsl:value-of select="round('7.983')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "round('7.5')" = </xsl:text>
        <xsl:value-of select="round('7.5')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "round('-7.893')" = </xsl:text>
        <xsl:value-of select="round('-7.893')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "round('-7.5')" = </xsl:text>
        <xsl:value-of select="round('-7.5')"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "round(/report/month[@sequence='01']/miles-flown)" = </xsl:text>
        <xsl:value-of select="round(/report/month[@sequence='01']/miles-flown)"/>

        <xsl:value-of select="$newline"/>
        <xsl:text>   "round(document('')/*/months:name[@sequence='02'])" = </xsl:text>
        <xsl:value-of select="round(document('')/*/months:name[@sequence='02'])"/>

        <xsl:value-of select="$newline"/>
        <xsl:value-of select="$newline"/>

        <xsl:for-each select="/report/month">
          <xsl:text>   </xsl:text>
          <xsl:value-of
            select="document('')/*/months:name[@sequence=current()/@sequence]"/>
          <xsl:text> - </xsl:text>
          <xsl:value-of select="format-number(miles-flown, '##,###')"/>
          <xsl:text> miles flown, </xsl:text>
          <xsl:value-of select="format-number(miles-earned, '##,###')"/>
          <xsl:text> miles earned.</xsl:text>
          <xsl:value-of select="$newline"/>
          <xsl:text>      (Averaged </xsl:text>
          <xsl:value-of select="round(miles-earned div miles-flown)"/>
          <xsl:text> miles earned for each mile flown.)</xsl:text>
          <xsl:value-of select="$newline"/>
        </xsl:for-each>
      </xsl:template>

    </xsl:stylesheet>
Hier das Ergebnis, wenn Sie das XML-Dokument mit diesem Stylesheet verarbeiten:
    Tests of the round() function:

       "round('7.983')" = 8
       "round('7.5')" = 8
       "round('-7.893')" = -8
       "round('-7.5')" = -7
       "round(/report/month[@sequence='01']/miles-flown)" = 12379
       "round(document('')/*/months:name[@sequence='02'])" = NaN

       January - 12,379 miles flown, 35,215 miles earned.
          (Averaged 3 miles earned for each mile flown.)

       February - 32,857 miles flown, 92,731 miles earned.
          (Averaged 3 miles earned for each mile flown.)

       March - 19,920 miles flown, 76,725 miles earned.
          (Averaged 4 miles earned for each mile flown.)

       April - 18,903 miles flown, 31,781 miles earned.
          (Averaged 2 miles earned for each mile flown.)
Sie können diese Ergebnisse mit denen der Funktion ceiling() und der Funktion floor() vergleichen.