There's more than one way to do things PerlMonks

### Re: Is this odd behavior a floating point problem?

by Khen1950fx (Canon)
 on Mar 23, 2012 at 19:18 UTC ( #961296=note: print w/replies, xml ) Need Help??

As I see it, you're performing addition, division, and averaging. You can dispense with the addition, division, and since you have an array, just do an average of the elements.
```#!/usr/bin/perl -l

use strict;
use warnings;
use Array::Average;

print average(
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
);
Returns: 0.001

Replies are listed 'Best First'.
Re^2: Is this odd behavior a floating point problem?
by Eliya (Vicar) on Mar 23, 2012 at 20:48 UTC
You can dispense with the addition, division,...

And how do you think the module arrives at its result?  What it does is exactly addition and division — which of course suffers from the same floating point issues.  Here's the relevant code snippet:

```  if (@data) {
my \$sum=0;
\$sum+=\$_ foreach @data;
return \$sum/scalar(@data);
} else {
return undef;
}

Anyhow, as has already been pointed out, the OP's problem has likely nothing whatsoever to do with those general floating point issues, but is presumably simply the result of having computed the sum incorrectly.

Create A New User
Node Status?
node history
Node Type: note [id://961296]
help
Chatterbox?
 [holli]: the best course of action would be to transfer the data to something well tested. even if it isnt perl based [moritz]: but even if I had all the time in the world, I wouldn't spend much on perlmonks [LanX]: holli: LOL [LanX]: moritz: why ? family? [LanX]: or other language? [moritz]: LanX because of usability issues, and the lack of evolvement [holli]: lol to the robust charme or to the data transfer? [holli]: it works fine with Lynx though :) [LanX]: it's easier to patch then to migrate to a PHP board, there are many semantics like linking , authorisation, templates ,... [LanX]: I've only seen 30% of the semi professional documentation

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2017-11-20 19:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In order to be able to say "I know Perl", you must have:

Results (292 votes). Check out past polls.

Notices?