A float is a terrible idea for financial stuff, it’s not allowed in the financial sectors in the real world due to the dynamic precision of the mantisse.
With a single precision float in the most ideal circumstances this gives imprecisions of
0.001 above 16,777.216
0.002 above 33,554.432
0.004 above 67,108.864
2097.152 above 35,184,372,088.832 (35.2 Bil)
etc. (always times 2)
At some point the precision is too large for a single item to be bought/sold. Maybe use a signed long/int64, for this? It would roll over after 9,223,372,036,854,775,808 when using 3 decimals it will roll over at 9,2 quadrillion wouldn’t that be better? At that point nothing would make a dent into it maybe after hardcapping it?
There might be other things you would have done to mitigate the precision problem but i don’t know since it’s not in the patch notes.