mai cercare di fare un confronto eguali
doppia da, db;
...
se (da == db) poi qualcosa.
ricordare che C utilizza doppio di default, quindi se si vuole fare singola precisione, essere chiari su di esso
galleggiante FA, FB;
...
fa = fb + 1,0;
convertirà fb di raddoppiare fare un doppio add poi convertire in singolo e fare un unico uguale
Invece
fa = fb + 1.0F.
tutto singolo.
Se si intende utilizzare un numero intero come 1.0 non renderlo un numero decimale nel codice. ottieni più affidabilità dai tuoi compilatori/strumenti se puoi minimizzare i numeri ascii. so
fa = fb + 1;
o al posto di
fa = fb + 0.3333333F;
fare qualcosa del genere (se interessato alla precisione).
fc = 1; fc = fc/3; fa = fb + fc;
Un sacco di altre cose, il punto in virgola mobile è doloroso, i compilatori e le librerie non sono così buone, fpus hanno bug e IEEE è eccezionalmente doloroso e porta a più bug. Sfortunatamente questo è il mondo in cui viviamo sulla maggior parte delle piattaforme.
fonte
2010-06-23 14:44:51
Ci sono molte domande su SO che trattano già questo. Hai fatto una ricerca e non hai trovato nessuno che risponda a questo? – ChrisF
Utilizza le macro di confronto (C99 std: 7.12.14 Macro di confronto) invece di operatori come ==,> =, ecc. –
La natura cumulativa delle "risposte" a questa domanda sembra renderla un candidato privilegiato per Wiki di comunità. – corsiKa