Mi chiedevo se esiste un modo per superare un problema di accuratezza che sembra essere il risultato di rappresentazione interna della mia macchina dei numeri in virgola mobile:Trattare con problemi di precisione in numeri in virgola mobile
Per motivi di chiarezza il problema è riassunta come:
// str is "4.600"; atof(str) is 4.5999999999999996
double mw = atof(str)
// The variables used in the columns calculation below are:
//
// mw = 4.5999999999999996
// p = 0.2
// g = 0.2
// h = 1 (integer)
int columns = (int) ((mw - (h * 11 * p))/((h * 11 * p) + g)) + 1;
Prima di colata per un numero intero digitare il risultato di colonne calcolo è 1,9999999999999996; così vicino ma così lontano dal risultato desiderato di 2.0.
Qualsiasi suggerimento benvenuto.
questa domanda è stato chiesto e ha risposto prima ... solo in cerca di esso ... –
Leggi sull'analisi numerica, è un grosso problema in certe situazioni. Forse usare librerie matematiche alternative (ma più lente) come BigDecimal, ecc ... – JeeBee