あなたが提案した3つのうち(さらにコメントから1つ)、明らかに最良の選択肢があります。
BIGINT —わずか8バイトを使用しますが、最大のBIGINT
10進数は19桁のみです。 10で割ると、表現できる最大値は9.22であり、十分な範囲ではありません。
ダブル —精度は10進数で15〜17桁のみです。浮動小数点演算のすべての既知の欠点があります。
VARCHAR —小数点以下18桁を処理する場合は、20バイト以上を使用します。一定のstring↔int変換が必要になります。並べ替えることはできません。比較することはできません。 DBに追加することはできません。多くの欠点。
10進数(27,18) – MySQLを使用している場合、これには12バイトかかります(9桁のグループごとに4 )。これは非常に妥当なストレージサイズであり、10億から1Weiまでの量をサポートするのに十分な範囲があります。精度を損なうことなく、データベース内で並べ替え、比較、加算、減算などを行うことができます。
DECIMAL(27,18)
を使用します (またはDECIMAL(36,18)
本当に巨大な値を保存する必要がある場合)暗号通貨のお金の値を保存するために。