Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Strange int() result

by Laurent_R (Prior)
on Jun 18, 2014 at 18:04 UTC ( #1090324=note: print w/ replies, xml ) Need Help??


in reply to Strange int() result

I think the solution proposed by Athanasius is probably best. But if you want to use a regex, this one is simpler than yours:

$amount =~ s/\.//;


Comment on Re: Strange int() result
Download Code
Re^2: Strange int() result
by flowdy (Sexton) on Jun 18, 2014 at 19:51 UTC

    It is no use in simply removing the dot. Probably you mean $amount =~ s/\..+//? int() is faster.

      How so? The OP's problem comes from the use of int function on a number calculated as 35784.45 * 100 and turning out to be very very slightly smaller than 3578445. It seems to me you probably read too quickly the OP. Example under the debugger:
      DB<10> $amount = 35784.45; DB<11> $amount =~ s/\.//; DB<12> print $amount; 3578445
        Thanks, got the point. Shame on me.
        Very interesting test! I could not understand at first why multiplying with an even integer factor would introduce rounding errors. So it seemed, but when I went one step back and ignored the multiplication I saw: the value itself is not expressible as a fixedpoint binary number.

        So there are two ways to look at it (numerically and as a string):

        $ perl -wE '$x=35784.45; printf "%.15f\n%s", $x, $x;' 35784.449999999997090 35784.45

        Since now I always assumed the string representation were made from the numerical representation thus giving the same output. That was obviously wrong.

        Update:

        A second counter test

        $ perl -wE '$x=35784.449999999997090; printf "%.15f\n%s", $x, $x;' 35784.449999999997090 35784.45
        reveals: the string representation always uses some rounding.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1090324]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (10)
As of 2015-07-06 15:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (77 votes), past polls