Hi all,
This example of the issue Davide pointed out relative to this post involving the round-off error associated with decimals came up in a problem that I was working on, so I'm putting it here as another example. Consider the problem text
$p1 = 0.1; $i = 0; while ( round(10*$p1) != 9 && $i < 10) { $p1 = 0.5 + non_zero_random(-0.2,0.4,0.1); $i++; } $p2 = 0.9 - $p1; BEGIN_TEXT $p1, $p2 END_TEXT
(Note that the loop is to ensure that the value of $p1
is 0.9, and that this was generated through the call to non_zero_random
. I included the counter $i
because I really don't like having loops that don't terminate.)
The output is 0.9, -1.11022302462516e-16
, which suggests to me that we're getting numeric (data storage and/or round off) error when calculating the values.
It is interesting to try this and the (theoretically equivalent, but not)
$p1 = 0.9; $p2 = 0.9 - $p1; BEGIN_TEXT $p1, $p2 END_TEXT
In Davide's interactive problem lab.
Gavin