Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Strange int() result

by Laurent_R (Parson)
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 browsing the Monastery: (5)
As of 2014-10-26 02:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (149 votes), past polls