On 2012-01-04 00:33:44 +0000, Laurence Rowe wrote: > On 3 January 2012 22:33, Vincent Lefevre <vincent+gn...@vinc17.org> wrote: > > As a consequence, the output value should be "8.95" (like the input) > > because 8.95 rounds to X and has less than 17 digits. > > You're right, xpath.c just prints DBL_DIG digits (a constant from > float.h).
At least, this guarantees that when the value is read back in decimal, this will give the same floating-point number. BTW, I've just noticed that my examples with printf were incorrect: I didn't pay attention to the fact that /usr/bin/printf uses the long double type, and not the double type (this doesn't seem to be documented). > However, doing this properly is difficult, see: > http://bugs.python.org/issue1580. The reference I have is @InProceedings{BurgerDybvig1996, author = {R.~G. Burger and R.~Kent Dybvig}, title = {Printing Floating-Point Numbers Quickly and Accurately}, booktitle = {Proceedings of the {SIGPLAN'96} Conference on Programming Languages Design and Implementation}, year = 1996, pages = {108--116}, month = jun, } but I see it is mentioned there. Then I agree that it may be difficult, but not specifically for the XPath behavior. AFAIK, printing with DBL_DIG digits seems easier just because it is already implemented in the C library. :) FYI, the wanted behavior is implemented in GNU MPFR, but that would be overkill to use MPFR just for that (arbitrary precision would be a nice extension, though). -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon) _______________________________________________ xslt mailing list, project page http://xmlsoft.org/XSLT/ xslt@gnome.org http://mail.gnome.org/mailman/listinfo/xslt