Re: [xsl] XSLT 2.0 Decimal number silliness

Subject: Re: [xsl] XSLT 2.0 Decimal number silliness
From: Jeff Kenton <jkenton@xxxxxxxxxxxxx>
Date: Thu, 25 Mar 2004 13:09:29 -0500
Michael Kay wrote:
If there's a better way of specifying it, then I'd be interested in your
suggestions.

The spec leaves it implementation-defined.

I know. I think that's a mistake, especially since numeric constants that used to be doubles (e.g., 1.5) are now decimal by default.



Saxon produces a result with 18+N+M digits where N and M are the number of digits in the operands. I'd be very happy to implement a better rule if I could think of one.

Two possibilities. One is to allow some way to specify default number of fraction digits in the absence of a schema. Another is to implement a fixed precision and document it. I have chosen to implement 18 integer digits plus 18 fraction digits. I believe this is legitimate according to the spec (tell me if I'm wrong), and it's a whole lot easier to explain to users. Plus, you get exactly the same answers no matter how you calculate two-thirds in my examples below.


--jeff


# -----Original Message-----
# From: Jeff Kenton [mailto:jkenton@xxxxxxxxxxxxx] # Sent: 25 March 2004 16:53
# To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
# Subject: [xsl] XSLT 2.0 Decimal number silliness
# # # I've been looking at XSLT 2.0 decimal numbers (again), and I # still think the WC needs to do better.
# # Consider the following stylesheet:
# # <?xml version="1.0" encoding="utf-8"?>
# <xsl:stylesheet # xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0" >
# # <xsl:template match="/">~
# <xsl:value-of select="2.0 div 3.0" />~
# <xsl:value-of select="0.444 div 0.666" />~ </xsl:template>
# # </xsl:stylesheet>
# # Using Saxon 7.x, this results in:
# # <?xml version="1.0" encoding="UTF-8"?>~
# 0.666666666666666667~
# 0.666666666666666666666667~
# # Both lines of output should be equal. There's got to be # something better. At least allow specification of number of # fraction digits.
# # --jeff
# # # #

Current Thread