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