| 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:
|
|
| 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. |
|