- From: <bugzilla@wiggum.w3.org>
- Date: Tue, 03 Jan 2006 14:49:40 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=2631
Summary: [XPath] Numeric Promotion
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Platform: PC
URL: http://lists.w3.org/Archives/Member/w3c-xsl-
query/2005Oct/0039.html
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: XPath
AssignedTo: chamberl@almaden.ibm.com
ReportedBy: mike@saxonica.com
QAContact: public-qt-comments@w3.org
This issue was raised on an internal email and is being copied here as a result
of action A-278-02. The issue reads:
In the Query test suite, test fn-distinct-values-mixed-args-012.xq is:
fn:distinct-values((xs:decimal('1.2'), xs:float('1.2')))
and the expected answer is "1.2".
This answer is valid if (xs:decimal('1.2') eq xs:float('1.2')).
But I'm having trouble deciding from the spec whether these two values are
equal. It hinges on the way promotion works.
If the decimal is promoted to a float, then the two values are equal.
If both values are promoted to doubles, then they are not equal. This is
because the float converts to the double 1.2000000476837158.
I don't think there is anything in the spec that tells us which way
promotion is supposed to work for a value comparison. It's interesting that
it makes such a dramatic difference to the result of a simple expression
like this. I suspect it's intended that the decimal should be promoted to a
float, making these test results correct (and Saxon wrong), but the spec
doesn't currently say so.
Michael Kay
Received on Tuesday, 3 January 2006 14:49:54 UTC