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
Inoltre inserirei questa approssimazione anche negli operatori <= e >=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)
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
Possibilità2codice://rappresentato esattamente da un double class Real{ public: Real(double d =0.0); //metodi private: double _value; };
Qualcuno di voi ha mai implementato qualcosa di simile?codice://due interi rappresentanti la parte intera e la parte decimale class Real{ public: Real(double d =0.0); //metodi private: int _intera, _decimale; };
Ho guardato in giro a varie librerie matematiche, e cen'è davvero di tutti i tipi, ma nessuna è realmente su misura ai miei bisogni

Rispondi quotando