Migliore risposta
I numeri in virgola mobile non vengono memorizzati accuratamente nella memoria del computer. Questo perché qualsiasi numero in virgola mobile viene approssimato alla rappresentazione binaria più vicina. Quindi, supponiamo di avere,
float a=0.87;
float b=0.87;
if(a==b){
printf("Equal \n");
} else {
printf("Not equal \n");
}
Possibilità sono, verrà stampato “Diverso”. Quindi, ora abbiamo una domanda. Come possiamo controllare luguaglianza di 2 numeri in virgola mobile?
Qui è dove entra in gioco 1e-12. Una differenza di inferiore a 1e-12 tra 2 numeri in virgola mobile è considerato sufficientemente basso da essere uguale. Quindi, nella seconda macro, controlla se il valore assoluto di a è minore di 1e-12. Il programma potrebbe apparire così:
float a=0.87;
float b=0.87;
if(zero(a-b)){
printf("Equal \n");
} else {
printf("Not qqual \n");
}
È garantito che stampi “Equal”.
Lo spero aiuta.
Rispondi
Beh, se a lui non interessa affatto, anche abbastanza per discuterne, il tuo compito è impossibile.
Se è disposto a parlare ma non ha voglia di leggere o conoscere il codice, prova a giocare con lui a questo gioco: sei un robot senza autonomia. Il suo compito è farti alzare dal divano, andare in cucina e preparare quattro panini con burro di arachidi e gelatina. Dovrà farlo dandoti comandi in inglese.
Comprendi azioni come “cammina verso” e “prendi il coltello dal cassetto”, quindi non deve “dirti come muovere ogni muscolo e tu capisci cosa sono gli oggetti, quindi non lo fa” devo definire “coltello”. Ma questo è il limite della tua comprensione.
Assicurati di eseguire le sue istruzioni letteralmente e fallo ricominciare da capo, ogni volta che il risultato non è quattro panini PB&J.
“Alzati e cammina verso la cucina”
Ti alzi e cammini verso il muro che separa la cucina dal soggiorno .
“Arg! Voglio dire alzati e cammina fino allingresso della cucina.”
Lo fai.
“Togli il pane dallarmadio”
Artigli la porta dellarmadio, incapace di estrarre il pane da esso.
“Apri la porta!”
Apri la porta del forno.
“Voglio dire apri la porta dellarmadio!”
Fallo.
“Tira fuori il pane”
Batti il pane dallarmadio e lo butti sul pavimento della cucina …