Можно попробовать реализовать что-то вроде этого:
http://www.docjar.org/html/api/java/math/BigInteger.java.html
Вам понадобится только 4 бита для одной цифры 0 - 9
Таким образом, значение Int может содержать до 8 цифр каждая. Я решил использовать массив символов, поэтому я использую удвоенную память, но для меня она используется только 1 раз.
Кроме того, при хранении всех цифр в одном int это чрезмерно усложняет его и, если что-то может даже замедлить.
У меня нет никаких тестов скорости, но, глядя на java-версию BigInteger, кажется, что она выполняет очень много работы.
Для меня я делаю следующее
//Number = 100,000.00, Number Digits = 32, Decimal Digits = 2.
BigDecimal *decimal = new BigDecimal("100000.00", 32, 2);
decimal += "1000.99";
cout << decimal->GetValue(0x1 | 0x2) << endl; //Format and show decimals.
//Prints: 101,000.99