On Wednesday, 22 November 2017 at 22:17:05 UTC, Walter Bright
wrote:
On 11/22/2017 5:45 AM, Steven Schveighoffer wrote:
1. All OS calls with timing requirements use non-floating
point to represent how long to sleep. After all a CPU uses
discrete math, and the timing implementation is no different.
Microsoft has numerous COM APIs for time functions. One of them
I had to deal with used doubles to represent seconds. This had
to be interfaced with other time functions that used integers.
The trouble came from round trips - there were cases where
double=>integer=>double did not produce the same result. Even
worse,
double=>integer=>double=>integer=>double ...
produced a creeping shift in the value! It took much time to
come up with a method of preventing such drift, and even that
was unreliable.
It's fixed point, not floating point, but this famous software
disaster is a pretty dramatic example:
http://www-users.math.umn.edu/~arnold/disasters/patriot.html
+1 to using integer arithmetic for the low-level time APIs.