Hva er bruken av 1e-12 i konkurranseprogrammering?


Beste svaret

Tall for flytende punkt lagres ikke nøyaktig i dataminnet. Dette er fordi et flytende antall blir tilnærmet nærmeste binære representasjon. La oss derfor anta at vi har,

float a=0.87;

float b=0.87;

if(a==b){

printf("Equal \n");

} else {

printf("Not equal \n");

}

Sjanser er, «Ikke like» vil bli skrevet ut. Så, nå har vi et spørsmål. Hvordan sjekker vi likheten mellom 2 flytende tall?

Her er hvor 1e-12 kommer inn i bildet. En forskjell på mindre enn 1e-12 mellom to flytende tall regnes som lave nok til at de er like. Derfor kontrollerer den i den andre makroen om den absolutte verdien av a er mindre enn 1e-12. Programmet kan se slik ut:

float a=0.87;

float b=0.87;

if(zero(a-b)){

printf("Equal \n");

} else {

printf("Not qqual \n");

}

Dette vil garantert skrive ut «Lik».

Jeg håper det hjelper.

Svar

Vel, hvis han ikke bryr seg i det hele tatt – til og med nok til å diskutere det – er oppgaven din umulig.

Hvis han er villig til å snakke, men ikke vil se på eller lære om kode, kan du prøve å spille dette spillet med ham: du er en robot uten autonomi. Hans jobb er å få deg til å reise deg fra sofaen, gå på kjøkkenet og lage fire peanøttsmør- og gelésmørbrød. Han må gjøre dette ved å gi deg engelske kommandoer.

Du forstår handlinger som «gå til» og «få kniv fra skuffen», så han trenger ikke å fortelle deg hvordan du skal bevege hver muskel, og du forstår hva gjenstander er, så han trenger ikke må definere «kniv». Men det er grensen for din forståelse.

Sørg for at du utfører instruksjonene hans bokstavelig, og får ham til å begynne på nytt, hver gang resultatet ikke er fire PB&J-smørbrød.

«Stå opp og gå til kjøkkenet»

Du reiser deg og går til veggen som skiller kjøkkenet og stuen .

«Arg! Jeg mener å stå opp og gå til inngangsveien til kjøkkenet.»

Du gjør det.

«Fjern brødet fra skapet»

Du klør på skapdøren, og klarer ikke å trekke ut brød fra det.

«Åpne døren!»

Du åpner ovnsdøren.

«Jeg mener å åpne skapdøren!»

Du gjør det.

«Få brødet ut.»

Du banker brødet ut av skapet og på kjøkkengulvet …

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *