Subject: RE: [xsl] rounding within the "format-number" function From: "Haarman, Michael" <mhaarman@xxxxxxxxx> Date: Thu, 26 Jan 2006 11:30:20 -0600 |
> From: Michael Kay > > What I have noticed is that the XSL "format-number" function > > rounds to > > the nearest even number, instead of the bigger one, as is usual and > > would be expected. According to one site, this is sometimes called > > "banker's rounding." > > implementations written in Java probably used the underlying JDK class > library, which did "banker's rounding", but implementations in other > languages might have used a different algorithm. XSLT 2.0 > defines the rules > as you describe. It may be that what OP is witnessing is an artifact of floating point calculations returning something like .49999999 and rounding down. > > <xsl:value-of select='format-number( round(100*$number) div 100 , > > "##.00" )' Isn't it the case that this can still fail, only quite a bit less frequently? To ensure correct up-rounding, use this: <xsl:value-of select="format-number(ceiling(100 * $number) div 100, '##.00')"/> HTH, ----------------------------------- Mike Haarman, XSL Developer, Internet Broadcasting Systems, Inc.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] rounding within the "form, Michael Kay | Thread | RE: [xsl] rounding within the "form, Haarman, Michael |
RE: [xsl] Variable number of argume, Florent Georges | Date | RE: [xsl] rounding within the "form, Haarman, Michael |
Month |