An Double or Int64 are both 8 bytes and counts with picoseconds precision for 2.5 hours to 106 days. Going to 12 byte integer lets you count to 3.9 billion years (signed). Going to 16 byte integer is over 10^38 years.

Lennart Augustsson wrote:
A double has 53 bits in the mantissa which means that for a running
time of about 24 hours you'd still have picoseconds.  I doubt anyone
cares about picoseconds when the running time is a day.

The above is an unfounded claim about the rest of humanity.

That's why I think a Double is a good choice, it adapts to the time
scale involved.

Let's compute:

tTooBig :: Double
tTooBig = 2^53

main = do
  print (tTooBig == 1+ tTooBig)

The above prints True. How long does your computer have to be running before losing picosecond resolution?

tHours = tTooBig / (10^12) / 60 / 60

tHours is 2.501999792983609.

My laptop battery lasts longer.

Nanosecond precision is lost after 106 days.

--
Chris

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to