quello che stai chiedendo è anti-fisica.
Nei phyton (e C++ pure) do viene interrotta l'inesattezza arrotondando il risultato al momento di stamparlo, riducendo il numero di cifre significative:
double x = 2.5;
x += 2.5;
std::cout << x << std::endl;
rende solo x essere stampato con 6 cifre decimali di precisione (mentre x stesso ha più di 12), e sarà arrotondato come 5, eliminando l'imprecisione.
alternative non utilizzano virgola mobile a tutti, e implementano tipi di dati che si limitano integer "scalati" aritmetica: 25/10 + 25/10 = 50/10;
noti, tuttavia, che questo ridurrà il limite superiore rappresentato da ciascun tipo intero. Il guadagno in precisione (ed esattezza) si tradurrà in una maggiore velocità di trabocco.
L'aritmetica razionale è anche possibile (ogni numero è rappresentato da un "numarator" e un "denominatore"), senza alcuna perdita di precisione contro le divisioni, (che -Infatti- non sono fatti a meno che esatti) ma ancora, con l'aumentare valori al crescere del numero di operazioni (meno "razionale" è il numero, più grande è il numeratore e il denominatore) con maggiore rischio di overflow.
In altre parole il fatto che un numero finito di bit sia utilizzato (non importa quanto organizzato) provocherà sempre una perdita da pagare sul lato del piccolo sul lato dei grandi numeri.
fonte
2013-03-10 08:01:14
Hai guardato questo? http://gcc.gnu.org/onlinedocs/gcc-4.6.0/libstdc++/api/a01152.html – kfmfe04
Cosa stai chiedendo? 2.5 + 2.5 è 5.0 anche in C !? –
duplicati con questo: http://stackoverflow.com/questions/14096026/c-decimal-data-types – zzk