Лучший способ хранить точное десятичное число - PullRequest
2 голосов
/ 10 июня 2019

Мне нужно хранить десятичную произвольную длину в c ++.Ниже рассматривается структура, которую мы рассматриваем:

<NumberAsString(char*), DecimalAt(int32)>

Примером этого может быть:

1.00003940400
<"100003940400", 11>

0.0004
<"0004", 4>

10
<"10", 0>

Похоже ли это на хороший способ хранения десятичной дроби?Есть ли лучший способ сделать это?

Другой возможный подход был бы аналогичен тому, как «денежные модули» часто работают в javascript, например, давая число как int «в центах» - $ 102,25хранится как 10225. И мы будем хранить его так:

<int64, int64> # the second int64 would be the decimal places

Например, если мы допустим «5 десятичных знаков точности», то мы будем хранить:

12.250
<12, .250E5> // or <12, 25000>

Какой подход будет лучше - или, возможно, использовать что-то еще целиком?

...