W3C home > Mailing lists > Public > public-webont-comments@w3.org > July 2008

RE: ISSUE-126 (Revisit Datatypes): A new proposal for the real <-> float <-> double conundrum

From: Michael Kay <mike@saxonica.com>
Date: Tue, 8 Jul 2008 19:54:03 +0100
To: <paul@sparrow-hawk.org>, "'Alan Ruttenberg'" <alanruttenberg@gmail.com>
Cc: "'Dave Peterson'" <davep@iit.edu>, "'Rob Shearer'" <rob.shearer@comlab.ox.ac.uk>, <public-webont-comments@w3.org>, <public-owl-wg@w3.org>, <www-xml-schema-comments@w3.org>
Message-ID: <4B8C96EBBEDE4FDF9C9B1D3D9653BC7E@Sealion>

> The best explanation that I know of was written by Mark 
> Reinhold, a member of the original schema WG (...and, if 
> memory serves me, was a member of the team that wrote the 
> Java floating-point spec).
> During the development of the Schema 1.0 (i.e., a few years 
> before we went to Rec) we had MANY discussions about the 
> numeric types, and especially about float and double.  As 
> part of that discussion, Mark wrote a note entitled 
> "Floating-point datatypes are not real datatypes" 
> [1] that goes into great detail on this point.  It also 
> serves as a good entry point to the archives for the 
> discussions the WG had on these issues.

Thanks for the pointer, Paul. I confirms much of what people have said about
the original rationale.

In my view the note makes two basic assumptions that are open to question:

(a) it takes the view that all restriction must be facet-based; I can't see
any particular necessity in the theory that if a type is magic then it has
to be primitive.

(b) it claims the existence of a "principle that if a string
maps to a given value in a particular type then it should map to the same
in all supertypes". I don't see that principle as being in any way
fundamental, and I certainly don't see it as "fundamental to subtyping in
programming languages". It's also violated within XML Schema itself - " xx "
as an instance of xs:token maps to a different value from " xx " as an

At the same time it's true that most modern languages do the same as
Schema+QT: they treat integer, double and float as separate primitive types
with no hierarchic relationship, and then define operators such as "=" and
"+" to operate across a value space that is effectively the union of these

Michael Kay
Received on Tuesday, 8 July 2008 18:54:50 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:09:30 UTC