Subject: RE: Rounding errors in financial app transforms
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 26 Jul 2007 13:56:09 +0100
|
> What's the recommended recipe to avoid rounding-error
> discrepancies in financial applications based upon XSLT (2.0)
> transforms?
Use xs:decimal arithmetic.
If you use a schema-aware transformation, with a schema that defines the
relevant input fields as xs:decimal, then this will tend to happen
automatically. If you use a non-schema-aware transformation, or if the input
contains data that isn't validated or isn't validated as xs:decimal, then
you can achieve the same effect "by hand", for example by writing
sum(product/sales-value/xs:decimal(.))
Be aware that there can be a performance hit in using xs:decimal compared to
xs:double, it shouldn't be done unless you actually need it.
Michael Kay
http://www.saxonica.com/
|