Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[C++] Errore di calcolo

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[21] Re: [C++] Errore di calcolo

Messaggioda Foto UtenteManu18life » 6 feb 2013, 13:10

Adesso qualcuno sa come approssimare il confronto???

Io avevo pensato a una cosa poco ortodossa tipo:
moltiplicare per 1000 i valori dei prodotti
cosi facendo ad esempio 0.1235478 diventa 123.5478
assegnare l'intero di tale valore ad una variabile appoggio ( ovvero app=(int) variabile )
dunque si passa da 123.5478 a 123
dividere dunque per 1000 e riassegnare il valore alla variabile di partenza
ovvero 123 diventa 0.123
Avatar utente
Foto UtenteManu18life
10 2
 
Messaggi: 30
Iscritto il: 20 gen 2013, 14:46

0
voti

[22] Re: [C++] Errore di calcolo

Messaggioda Foto UtenteManu18life » 6 feb 2013, 13:21

Funziona, tutto ok :ok:
Grazie a tutti per l'interessamento :-)
Avatar utente
Foto UtenteManu18life
10 2
 
Messaggi: 30
Iscritto il: 20 gen 2013, 14:46

0
voti

[23] Re: [C++] Errore di calcolo

Messaggioda Foto UtenteTardoFreak » 6 feb 2013, 13:40

i, il sistema che hai descritto in [22] va bene.
Tuttavia, sarà perché come microcontrollista sono sempre "tirato per il collo" ed ho sempre problemi di RAM, usa variabili double, tu che hai la possibilità di farlo. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[24] Re: [C++] Errore di calcolo

Messaggioda Foto UtenteDirtyDeeds » 6 feb 2013, 14:03

Manu18life ha scritto:Adesso qualcuno sa come approssimare il confronto???


I confronti tra numeri in floating point conviene farli non con ==, ma controllando che il numero da confrontare stia in un certo intervallo centrato nel numero di riferimento. Per esempio:

Codice: Seleziona tutto
#define DELTA 1e-3

...

double x, x0;

...

if ( x  >= x0-DELTA && x <= x0+DELTA ) {
  Confronto ok;
}


oppure

Codice: Seleziona tutto
#define DELTA 1e-3

...

double x, x0;

...

if ( fabs(x-x0) <= DELTA ) {
  Confronto ok;
}


Anche questo modo però non è sempre sicuro. Per maggiori dettagli, leggi qui.

PS: lasciati dire che il tuo stile di programmazione lascia veramente molto a desiderare ;-) Tra l'altro di C++ non c'è veramente nulla lì, a parte le funzioni di I/O, tanto vale scrivere in C.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

Precedente

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 40 ospiti