- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 21 Sep 2006 08:05:16 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=3759
Summary: [F+O] round-half-to-even and float precision
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Functions and Operators
AssignedTo: ashok.malhotra@oracle.com
ReportedBy: mike@saxonica.com
QAContact: public-qt-comments@w3.org
This issue arises from an XSLT test case bug:
http://www.w3.org/Member/bugzilla/show_bug.cgi?id=624
(member-only)
but it is not specific to XSLT. The question is, what exactly does it mean in
F+O 6.4.5 when it says "If two such values are equally near (e.g. if the
fractional part in $arg is exactly .500...), returns the one whose least
significant digit is even. "
The case in question is
round-half-to-even(xs:float(150.0150e0), 2)
At first sight 150.015 is equally close to 150.01 and 150.02, so it should be
rounded up. However, xs:float(150.015e0) actually returns a number whose
precise value is 150.0149993896484375, which would suggest rounding down. (This
is what I think should be done, and what the published test results do).
However, Joanne has argued:
xs:float(150.01) = 150.00999450683594
xs:float(150.015) = 150.01499938964844
xs:float(150.02) = 150.02000427246094
and therefore 150.015 is equally close to both. But I can't see any
justification for this line of reasoning in the spec. The spec says we should
compare with "a multiple of ten to the power of minus $precision.", not with an
xs:float approximation to this.
Received on Thursday, 21 September 2006 08:05:26 UTC