Grazie per le risposte.
Non sò se utile, ma stò creando una classe Decimal per contenere numeri long long.
class Decimal : public Printable
{ private:
int64_t value;
uint8_t decimals;
uint32_t numdec; // decimals=3 numdec=1000
...
Decimal operator+(Decimal d)
{ Decimal newd;
newd.decimals=d.decimals;
newd.value = value + d.value ;
return newd;
}
Una classe anche printable e con operatori overloaded.
La difficoltà è su operatore *
Decimal operator*(Decimal d)
{ Decimal newd;
newd.decimals=d.decimals;
newd.value = value * d.value ; // errato
// 123.45 * 9.52 => 1175.244 123.45 * 9.5 => 1172.775
// 12345 * 952 => 11752440 12345 * 950 => 11727750
return newd;
}
Nella mia idea per ogni oggetto Decimal decidi anche quanti decimali (max 10) e quindi potrei moltiplicare 2 Decimal con numero decimali desiderati diversi.
Forse è meglio scegliere un numero di decimali fisso, esempio 10 con una bella #define e quindi decidere quanti decimali stampare solo in fase di "output" del dato ?
Comunque mi sono impantanato con la operator*