Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: decimal precision

by why_bird (Pilgrim)
on May 30, 2008 at 15:08 UTC ( [id://689243]=note: print w/replies, xml ) Need Help??


in reply to decimal precision

and than deal with that number when calculating the next number in the iteration (last number in the list)

This suggests to me that you actually want to use the rounded number in the next line of your iteration. Is this intentional?

A method that doesn't rely on interpreting the number in string context is as follows:

use warnings; use strict; use bignum; sub trim { my $number=$_[0]; my $no_d_p=$_[1]; #number of decimal places die "$number is not a number" unless &isNumber($number); #check th +at you've got the right input die "$no_d_p is not an integer" unless int($no_d_p)==$no_d_p; my $power=0; for($power=0;$number<=(10**($no_d_p-1));$power++){ $number*=10; } $number=int($number); $number/=(10**$power); return($number); } sub isNumber { my $number=$_[0]; if ($number !~ /^\-?\d+(?:\.\d+)?(?:[Ee][+-]?\d{1,3})?$/){ return 0; } else { return 1; } } my $e = 0.00141; my $o =1; for(my $r=0; $r<=10; $r++){ $o *=$e; $o=&trim($o,5); print "$o\n"; } exit 0;
prints:
0.00141 0.0000019881 0.0000000028032 0.0000000000039525 0.000000000000005573 0.0000000000000000078579 0.000000000000000000011079 0.000000000000000000000015621 0.000000000000000000000000022025 0.000000000000000000000000000031055 0.000000000000000000000000000000043787

This obviously introduces rounding errors. is that what you want or have I mis-interpreted the question?

........
Those are my principles. If you don't like them I have others.
-- Groucho Marx
.......

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2024-04-19 12:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found