Bästa svaret
Flytpunktsnummer lagras inte exakt i datorns minne. Detta beror på att varje flytande punkt approximeras till närmaste binära representation. Låt oss därför anta att vi har,
float a=0.87;
float b=0.87;
if(a==b){
printf("Equal \n");
} else {
printf("Not equal \n");
}
Chanser är, ”Inte lika” kommer att skrivas ut. Så nu har vi en fråga. Hur kontrollerar vi likvärdigheten mellan två flytande siffror?
Här kommer 1e-12 till bild. En skillnad på mindre än 1e-12 mellan två flyttal anses vara tillräckligt låga för att de ska vara lika. Därför kontrollerar det i det andra makrot om det absoluta värdet på a är mindre än 1e-12. Programmet kan se ut så här: / p>
float a=0.87;
float b=0.87;
if(zero(a-b)){
printf("Equal \n");
} else {
printf("Not qqual \n");
}
Detta kommer garanterat att skriva ut ”Lik”.
Jag hoppas det hjälper.
Svar
Tja, om han inte bryr sig alls – till och med tillräckligt för att diskutera det – är din uppgift omöjlig.
Om han är villig att prata men inte vill titta på eller lära sig om kod, försök spela detta spel med honom: du är en robot utan autonomi. Hans jobb är att få dig att gå upp från soffan, gå till köket och göra fyra jordnötssmör och gelésmörgåsar. Han måste göra detta genom att ge dig engelska kommandon.
Du förstår handlingar som ”gå till” och ”få kniv från lådan”, så han behöver inte berätta för dig hur du rör varje muskel, och du förstår vad föremål är, så han behöver inte måste definiera ”kniv”. Men det är gränsen för din förståelse.
Se till att du utför hans instruktioner bokstavligt, och få honom att börja om, varje gång resultatet inte är fyra PB & J-smörgåsar.
”Stå upp och gå till köket”
Du står upp och går till väggen som skiljer köket och vardagsrummet .
”Arg! Jag menar stå upp och gå till köets ingång.”
Du gör det.
”Ta bort brödet från skåpet”
Du klor vid skåpdörren och kan inte extrahera bröd från det.
”Öppna dörren!”
Du öppnar ugnsluckan.
”Jag menar öppna skåpdörren!”
Du gör det.
”Ta ut brödet.”
Du slår brödet ur skåpet och på köksgolvet …