Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: decimal precision

by why_bird (Pilgrim)
on May 30, 2008 at 15:08 UTC ( #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;
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?

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2023-05-31 17:11 GMT
Find Nodes?
    Voting Booth?

    No recent polls found