On Saturday 08 December 2007 01:10:43 pm Brian Hurt wrote: > > `./floats.pl | wc -l` = 101 > > > > oops! Thats one too many. > > This is a fencepost error, not a floating point inaccuracy. > > Brian > It's a fencepost error caused by a floating point inaccuracy. In real world math, you'd add .1 to 0 until it got to exactly 10, which would fail the loop conditional. In a computer's floating point math rounding errors start to creep in, and what should be your last iteration at 10 that stops the loop ends up being slightly less than 10 and allows the loop to iterate one too many times. very end of the output.... 9.79999999999998 9.89999999999998 9.99999999999998 10.1 In python it's even more amusing.... float = 0.0 interval = .1 max = 10.0 while float < max: float += interval print float very end of input.... 9.6 9.7 9.8 9.9 10.0 <--- 10.0 is less than 10.0! 10.1 Stick to your embedded systems. Leave the high-level languages to people that can handle them. ;) -- Thanks, Josh Paetzel PGP: 8A48 EF36 5E9F 4EDA 5A8C 11B4 26F9 01F1 27AF AECB -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: This is a digitally signed message part. Url : http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20071208/5452b378/attachment.pgp