in reply to Re: Is this odd behavior a floating point problem?
in thread Is this odd behavior a floating point problem?
:D Looks like two separate off-by-one error (OBOE) errors to me :)
First you start with non-zero and add 40 times (one too many), then you start with non-zero and add 41 times (one too many twice).
If you start with non-zero you need to add only 39 times, or start with zero and add 40 times :)
In short
perl -MData::Dump -e " @f = map { 0.001 } 1 .. 40; dd\@f; $o = 0; for( +@f){ dd $o+=$_; } dd int @f; dd $o/int(@f); " perl -MData::Dump -e " $o = 0; for(1 .. 40){ dd $o+= 0.001; } dd $o/4 +0; "
It didn't dawn on me to check wickedjesters (or your) math until ww raised the quesiton
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Is this odd behavior a floating point problem?
by Eliya (Vicar) on Mar 24, 2012 at 01:09 UTC |
In Section
Seekers of Perl Wisdom