Re: [xml] Getting crazy with float parsing
- From: Anthony Jones <amj30 cam ac uk>
- To: Daniel Veillard <veillard redhat com>
- Cc: Bjorn Reese <breese mail1 stofanet dk>,	"'xml gnome org'" <xml gnome org>
- Subject: Re: [xml] Getting crazy with float parsing
- Date: Sun, 5 May 2002 19:07:33 +0100
On Sun, May 05, 2002 at 01:34:15PM -0400, Daniel Veillard wrote:
 I have spent 2 hours on bug 80798
   http://bugzilla.gnome.org/show_bug.cgi?id=80798
 and I'm starting to wonder if I'm simply turning crazy.
I cannot get xmlXPatythStringEvalNumber to read "39413.80" as such
and not as 39413.800000000003 or some similary biased value, whatever
trick I play. 
 Any idea ? Would trio handle this correctly (assuming the string has
been first checked to be of the right format) ?
I think this is just because of the inherent inaccuracy of floating point
numbers:
~$ cat test.c 
#include <stdio.h>
int main(void)
{
    double d = 39413.8;
    printf("%.20f\n", d);
    return(0);
}
~$ gcc test.c -o test
~$ ./test 
39413.80000000000291038305
~$
I don't think there's any way of getting a double to equal exactly
39413.80, because the number is stored in base 2, and 0.8 = 4/5 cannot be
represented as an exact fraction in base 2, just as you can't represent 1/3
= 0.3333... as an exact fraction in base 10...
HTH,
Anthony
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]