[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] XPath 1.0: sum() and precision


Subject: Re: [xsl] XPath 1.0: sum() and precision
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Thu, 27 Sep 2012 19:08:37 +0100

On 27 September 2012 18:32, Florent Georges <lists@xxxxxxxxxxxx> wrote:
>   Hi,
>
>   I have a question about sum() and precision in XPath 1.0.
> Let's say I have the following XML document:
>
>     <numbers>
>        <num>75</num>
>        <num>356.98</num>
>        <num>2052.51</num>
>     </numbers>
>
>   The expression "sum(/numbers/num)" returns something like
> 2484.490000000000000002 (and not 2484.49) because numbers are
> turned into xs:double instead of xs:decimal, and some precision
> is lost during floating-point computation.  In XPath 2.0, it's
> easy, I can just use instead "sum(/numbers/num/xs:decimal(.))",
> but this is not XPath 1.0.
>
>   What can I use in XPath 1.0 (so only XPath, and only 1.0) in
> order to get 2484.49?

I guess if you are stuck with xpath 1.0 it would have to be
substring... (or split on the ., then round() on the first 3 digits eg
the 490)


-- 
Andrew Welch
http://andrewjwelch.com


Current Thread
Keywords