A balance is never a float. f64 cannot represent 0.1 exactly, so arithmetic accumulates error — and in a ledger, error means money that does not reconcile.
0.1f64 + 0.2f64 == 0.3 // false
The universal answer is fixed point: store the smallest indivisible unit as an integer. Stellar counts stroops, at 10_000_000 per XLM. Most currencies count cents. There is no rounding, because there is nothing to round.
