Non so se i miei sentimenti siano da considerarsi "strani" ma ultimamente (sviluppando piccole applicazioni di tipo scientifico, per risolvere problemi ingegneristici) sto diventando davvero insofferente all'uso dei tipi di base float/double/ecc...
Mi piacerebbe avere una classe che rappresenti un numero reale e che abbia, oltre agli ovvi operatori, anche alcuni metodi utili. In particolare dei metodi tostring(), fromstring(), sarebbero utilissimi.
Inserirei anche una approssimazione nell'overloading dell'operatore ==.
Per ora sto usando una funzione scritta da me
codice:
bool areEqual(double x, double y, double epsilon=0.0000000001)
{
  if(abs(x-y)<=epsilon)
       return true;
   return false;
}

//ma comunque a mio avviso
if (a==0)
// rimane più leggibile di
if(areEqual(a, 0.0)
Inoltre inserirei questa approssimazione anche negli operatori <= e >=
Detto questo comunque non so se sia una buona idea creare una classe di questo tipo, se per motivi prestazionali convenga comunque utilizzare i tipi di base.
Poi ammesso che voglia implementarla: dovrei semplicemente mettere come membro privato un double?
Insomma anche sul'implementazione avrei (almeno) due possibilità:

Possibilità1
codice:
//rappresentato esattamente da un double
class Real{
public:
     Real(double d =0.0);

//metodi

private:
     double _value;
};
Possibilità2
codice:
//due interi rappresentanti la parte intera e la parte decimale
class Real{
public:
     Real(double d =0.0);

//metodi

private:
     int _intera, _decimale;
};
Qualcuno di voi ha mai implementato qualcosa di simile?
Ho guardato in giro a varie librerie matematiche, e cen'è davvero di tutti i tipi, ma nessuna è realmente su misura ai miei bisogni