http://www.perlmonks.org?node_id=1010282


in reply to Re: log() and int() problem
in thread log() and int() problem

And internally floats are stored in the string-slot of a variable
No they're not. An xpvnv has separate slots for an int, a float and a string:
[davem@pigeon bleed]$ p -MDevel::Peek -e'$x=1; $x=2.2; $x = "three"; D +ump $x' SV = PVNV(0x1ae3150) at 0x1b021d0 REFCNT = 1 FLAGS = (POK,pPOK) IV = 1 NV = 2.2 PV = 0x1afb360 "three"\0 CUR = 5 LEN = 16

Dave.

Replies are listed 'Best First'.
Re^3: log() and int() problem
by LanX (Saint) on Dec 25, 2012 at 18:49 UTC
    OK, thanks for correcting!

    (I already suspected that I should place one more "IIRC". :)

    Maybe I remembered something different or Scalar::Util::dualvar confused me or the reality in perl is even more complex. (and the latter wouldn't surprise me)

    Cheers Rolf

    PS: or was it JS ... ?!?

    UPDATE:

    For the records, here the source of my misunderstanding

    from perlnumber:

    Perl can internally represent numbers in 3 different ways: as native integers, as native floating point numbers, and as decimal strings. Decimal strings may have an exponential notation part, as in "12.34e-56" . Native here means "a format supported by the C compiler which was used to build perl".

    emphasis added.