RE: [xsl] floor() and idiv

Subject: RE: [xsl] floor() and idiv
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 6 Nov 2008 23:02:29 -0000
>     David> For xs:decimal values the number of digits of precision
>     David> returned by the numeric operators is
>     David> .implementation-defined.. If the number of digits in the
>     David> result exceeds the number of digits that the implementation
>     David> supports, the result is truncated or rounded in an
>     David> .implementation-defined. manner.
> Oh. Well that's a bad decision, as you no longer have the 
> neat divide between exact arithmetic (requested by xs:integer 
> or xs:decimal) and inexact arithmetic (requested by xs:double 
> and xs:float) that you get in XML Schema.

Dividing two integers can produce a result that is not expressible in a
finite number of decimal digits. The spec chose therefore to say that the
number of digits in the result of (10 div 3), say, is
implementation-defined. I don't know if that's the reason for the effect
being observed here, but I suspect so. In which case the statement in the
spec about the equivalence of xs:int(x div y) and (x idiv y) is clearly

Michael Kay

Current Thread