While I'm on a "computing curmudgeon" kick:

On Fri, 7 Dec 2007, Chris Frederick wrote:

> #!/usr/bin/perl -w
> my $float = 0, $interval = 0.1, $max = 10;
> while($float < $max){ $float += $interval; print "$float\n"; }
>
> oh wait!  And for those that think the extra decimal places at the end
> are no big deal, try counting the number of loops it goes through.

This is the main problem I have with using floats for time values: I don't 
think you should be allowed to use floats until you've have a course in 
Numerical Analysis, and can talk intelligibly about round off errors, 
numerically stable vr.s unstable algorithms, etc.

That said, floating point will quite happily represent *exactly* all 
integers in the range -2^52 to +2^52.  Giving us an extra 21 bits of 
accuracy over 32-bit signed integers.

>
> `./floats.pl | wc -l` = 101
>
> oops!  Thats one too many.

This is a fencepost error, not a floating point inaccuracy.

Brian