Subject: Re: [xsl] Rounding errors in financial app transforms From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Thu, 26 Jul 2007 15:07:02 +0200 |
xs:float(10.1) - xs:float(9.93) = 0.17000008 xs:double(10.1) - xs:double(9.93) = 0.16999999999999993 xs:decimal(10.1) - xs:decimal(9.93) = 0.17
Cheers, -- Abel Braaksma
What's the recommended recipe to avoid rounding-error discrepancies in financial applications based upon XSLT (2.0) transforms?
Having demonstrated a proof-of-concept for an application based on XSLT 2.0 to a commercial finance/accounting industry client (to replace a legacy system which happens to be written in CBASIC-86), a stumbling block / annoyance is the accumulation of one cent errors in the aggregated results.
This, of course, is as a result of using floating-point arithmetic in XSLT.
BCD arithmetic is apparently still used in mainframe applications, as was in CBASIC-86, but most latter-day languages including XSLT seem to have ignored it.
Does this means that one needs to resort to doing non-trivial financial apps in XSLT in integer arithmetic?
My guess is that even having a standard MulDiv function in XSLT would help matters floating-point-wise but sadly there is no such animal available.
Thanks to all for suggestions.
Justin Johansson
*** A horse with no name is called Lambda ***
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Rounding errors in financ, Dimitre Novatchev | Thread | Re: [xsl] Rounding errors in financ, David Carlisle |
Re: [xsl] Processing Recursive Grou, David Carlisle | Date | [xsl] Rounding errors in financial , Justin Johansson |
Month |