Keep using integers, but stop assuming one global “cents.” Store amounts as a signed BIGINT
in the currency’s smallest unit (atomic unit) and add a currencies
table that records decimals
for each currency/token (USD=2, BTC=8, many tokens=6–18). This stays exact, compact, and fast (no floats) and handles rials/crypto.