Yes, you're missing the fact that IEEE floating point numbers aren't exact representations.
Update: See for instance Equality checking for strings AND numbers for links and discussion.
Another Update: After actually running it and poking with Devel::Peek this is strange because that's showing a 2 for the NV part.
DB<8> x Dump( $x ) SV = PVNV(0x8e98f0) at 0x800e64 REFCNT = 2 FLAGS = (PADBUSY,PADMY,NOK,POK,pIOK,pNOK,pPOK) IV = 2 NV = 2 PV = 0x435c40 "2"\0 CUR = 1 LEN = 36 empty array
More poking: If you look at the number the representation's different under the hood, so it's definitely a float precision issue somewhere.
DB<11> x unpack( "h*", pack( "F", 2 ) ) 0 0000000000000004 DB<12> x unpack( "h*", pack( "F", $x ) ) 0 2000000000000004
The cake is a lie.
The cake is a lie.
The cake is a lie.
In reply to Re: When is a 2 not a 2?
by Fletch
in thread When is a 2 not a 2?
by RockM66
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |