In my particular case, 64 bit integers might be sufficient. I thought about it but then decided I wanted to be on the safe side. Maybe not the best decision.
So I wanted perform the caculations with high precision, then round the final result according to what the law requires.
How so? If there's a resting offer at 11.58726 and I put in a buy order, limit 11.63492, there's no reason an exchange can't match that and execute either at the midpoint or at 11.58726 +/- maker/taker (whichever the exchange policy is). What's the problem?
My understanding is that all prices on exchanges have a fixed number of decimal (and sometimes are even based on less granular base, like 1/8th of a decimal).
There's an argument that more granular prices make it harder for humans to read the order book but I don't put much faith in it.
Even in EUR/USD/GBP, a typical large bank balance sheet is over a trillon.