That's just not good enough given that your tick delivery system isn't guaranteed to give clients ticks in order, and on the US exchanges you get updates on certain rapidly ticking instruments (like SPY and QQQQ) many times a second. So you decide to add an extra millisecond-precision field to the tick to indicate the millisecond for the tick. This seems like a great idea, so you do it.
Only, unlike every rational human being who would give you an absolute time from Unix epoch as an integer, you don't, because you're special. Like an olympian.
Rather, you provide a double precision floating point number of milliseconds since midnight, and don't actually document that in any way.
Let's cover why the double precision bit is so retarded, shall we?
- I need milliseconds becuase I want more precision. That means that the least significant digits are actually the most important to me, not the least, because I already have other representations for the most significant digits. You're putting them in a data structure that strips away that precision.
- It's not an unexact value. It's an exact value. Floating point representation implies a loss of precision by its very nature.
- Nobody expects it. Milliseconds are integers. Always.
But here's the kicker: because they're actually milliseconds since midnight, there are only 86,400,000 possible values. Therefore, you can cleanly put them into a 32-bit integer, which your data structure supports.
Meaning, you're doing this because you suck and you want to make my life miserable.
By the way, so that this is better googleable, the actual fields are