|
||||
|
|||||||
![]() |
|
|
Strumenti della discussione | Modalità di visualizzazione |
|
|
#1 (permalink) |
|
Nuovo della community ![]()
4 Messaggi
![]() |
Problema di approssimazione e visualizzazione FP
Ciao, ho un piccolo problema ho il seguente programma che mi stampa un double 1.025,però quando provo a stampare la parte frazionaria mi da 024999999999......però se il mio numero double e 1.125 lo stampa bene cio 125.perche? mi pottete aiutare?
codice:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double x=1.025;
int parteintera,partefrazionaria,appoggio;
double parte_appoggio;
//converte la parte intera del double in intero e lo memorizza in parteintera
parteintera=(int)floor(x) ;
cout<<"la parte intera di x : "<<parteintera<<endl;
// adesso la parte frazionaria
cout<<"la parte intera senza quella frazionaria "<<parteintera<<"."<<endl ;
parte_appoggio=x-floor(x);
cout<<"la parte frazionaria e :"<<parte_appoggio<<endl ;
cout<<"parte frazionaria prima della conversione: "<<parte_appoggio<<endl;
cout<<"tentativo di estrazione e stamapa della parte frazionaria"<<endl;
while(parte_appoggio!=0)
{
//...
parte_appoggio *=10;
appoggio=(int)floor(parte_appoggio);
cout<<appoggio;
parte_appoggio=parte_appoggio - floor(parte_appoggio);
}
cout<<endl;
return 0;
}
Per questa volta ho provveduto personalmente alla modifica: in futuro ci si attende maggiore attenzione. Grazie. Ultima modifica di M.A.W. 1968 : 01-03-2010 a 18:10. Motivo: Formattazione del codice |
|
|
|
|
|
#2 (permalink) |
|
Moderatore Globale ![]() ![]()
371 Messaggi
![]() ![]() ![]() ![]() |
Il formato floating point (IEEE754) utilizzato quasi universalmente, e in particolare sull'hardware Intel, è inerentemente soggetto ad errori ed approssimazioni di varia natura. Ciò risulta peraltro altamente intuitivo, non appena si ponga mente al fatto che si sta vanamente tentando di mappare un insieme con la potenza del continuo (i numeri reali) su un insieme discreto, finito e con densità reticolare disomogenea (i valori floating point sono più "densi" in prossimità dello zero: il che, peraltro, spiega bene anche l'uso della normalizzazione con leading zero).
La questione viene affrontata (e sovente anche liquidata) nelle primissime pagine di qualsiasi testo di calcolo numerico, matematica numerica, metodi numerici... ad esempio, in questo bel lavoro del professor Murli (quella directory contiene un draft: il testo definitivo è in libreria, pubblicato da Liguori) e naturalmente nel diffusissimo articolo introduttivo di Goldberg, una pietra miliare in materia. L'argomento è già stato oggetto di numerosi thread in passato, come è facile attendersi: ad esempio recentemente qui, o qui.
__________________
Tutti gli utenti sono pregati di prendere visione del Regolamento del Forum e di rispettarlo. Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo... ![]() • "Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk." (Leopold Kronecker) • "A Mathematician is a machine for turning coffee into theorems." (Pal Erdös) • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico. |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Tutti gli orari sono GMT +2. Attualmente sono le 09:56.










Modalità lineare

