Otra cosa. Algunas veces (no entiendo por qué) tira por stderr lo siguiente:
Cita: Scale (-2147483648) Cant Be Negative!!!
Parece ser un pequeño bug, porque doy fe de que funciona bien (al menos, para operaciones aritméticas):
Código C++:
Ver original#include <iomanip>
#include <iostream>
#include "BigDecimal.h"
using namespace std;
int main() {
BigDecimal C;
BigDecimal A("1");
BigDecimal B("1000000000000000000000000000000000000000000000000000000000000");
BigDecimal D("2");
C = A / B;
cout << "C = " << C.toString() << endl; // 0.000000000000000000000000000000000000000000000000000000000001
C = C / D;
cout << "C = " << C.toString() << endl; // 0.0000000000000000000000000000000000000000000000000000000000005
C = C + (A / B);
cout << "C = " << C.toString() << endl; // 0.0000000000000000000000000000000000000000000000000000000000015
C = C * D;
cout << "C = " << C.toString() << endl; // 0.000000000000000000000000000000000000000000000000000000000003
}
Yo comentaría todos los
std::cerr
en BigDecimal.cpp para que no te lance errores innecesarios.
PD: También he visto en el código que tiene soporte para algunos operadores más: potencia ^, módulo % etc.