On Wed, 17 Mar 2004, Leopold Toetsch wrote: > Simon Glover <[EMAIL PROTECTED]> wrote: > > > This code: > > > new P0, .PerlNum > > set P0, -1.2 > > new P1, .PerlString > > set P1, "-1.2" > > eq_num P0, P1, OK > > print "not " > > OK: print "ok\n" > > end > > > [And yes, I'm well aware of the problems inherent in doing floating point > > comparisons. > > Breakpoint 1, Parrot_PerlNum_cmp_num (interpreter=0x82654f0, pmc=0x40305850, > value=0x40305838) at perlnum.c:301 > 301 diff = PMC_num_val(pmc) - VTABLE_get_number(interpreter, value); > (gdb) n > 302 return diff > 0 ? 1 : diff < 0 ? -1 : 0; > (gdb) p diff > $1 = 2.2204460492503131e-16 > (gdb)
OK, that suggests that there's a bug somewhere in our string->number conversion. Either that, or we're going to have to live with the fact that 1.2 and '1.2' are not the same number (which would suck). Simon