Existuje jasná nejlepší možnost ze tří, které jste navrhli (plus jedna z komentářů).
VELKÝ — používá pouhých 8 bajtů, ale největší BIGINT
má pouze 19 desetinných číslic; pokud vydělíte 10, největší hodnota, kterou můžete vyjádřit, je 9,22, což není dostatečný rozsah.
DVOJNÁSOBKA — má pouze přesnost 15–17 desetinných míst; má všechny známé nevýhody aritmetiky s plovoucí desetinnou čárkou.
VARCHAR — použije 20+ bajtů, pokud pracujete s 18 desetinnými místy; bude vyžadovat konstantní konverze string↔int; nelze třídit; nelze srovnávat; nelze přidat do DB; mnoho nevýhod.
DECIMAL(27;18) – pokud používáte MySQL, bude to trvat 12 bajtů (4 pro každou skupinu 9 číslic ). To je docela rozumná velikost úložiště a má dostatečný rozsah pro podporu množství velkých jako jedna miliarda nebo malých jako jeden Wei. Lze jej třídit, porovnávat, přidávat, odečítat atd. v databázi bez ztráty přesnosti.
Použil bych DECIMAL(27,18)
(nebo DECIMAL(36,18)
pokud potřebujete uchovávat skutečně obrovské hodnoty) k ukládání peněžních hodnot kryptoměny.