This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Xalan Rounding
- From: Jeff Kenton <jkenton at datapower dot com>
- To: xsl-mulberry <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 10 May 2002 15:08:11 -0400 (EDT)
- Subject: Re: [xsl] Xalan Rounding
- Reply-to: xsl-list at lists dot mulberrytech dot com
On Fri, 10 May 2002, Nik Krimm wrote:
..Another rounding question [sorry]:
..
..With the format-number function, if the the digit to be rounded off has a value of exactly .5, xalan rounds down. Regular round() produced the expected result (rounding up); however I'd prefer to use the format-number function because this template may output various precision decimals (0 - n decimal places). Sticking with format-number() would allow me to pass this information is as a $format variable.
..
..Any suggestions on how to handle this?
I just tried your test with both Xalan and Saxon. With a value of 106.5,
I saw rounding down to 106 with both. With a value of 107.5, it rounded
up to 108.
I suspect that what you are seeing is IEEE-754 round to nearest mode,
which says that ties are broken by rounding to an even value (don't ask
why unless you *REALLY* care why it's specified that way).
If this is the cause of what you're seeing (and I'm seeing), this is not
what XSLT requires.
..
..[xml]
..<values>
..<value>106.5</value>
..</values>
..
..[xsl]
..<xsl:template name="average-values">
..<xsl:param name="format">###</xsl:param>
..<xsl:value-of select="format-number(//value ,'##')" />
..</xsl:template>
..
..[xalan output]
..106
..
..[desired output]
..107
..
..TIA
..
.. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
..
--
Jeff Kenton
DataPower Technology, Inc.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list