La ce folosește 1e-12 în programarea competitivă?


Cel mai bun răspuns

Numerele cu virgulă mobilă nu sunt stocate cu precizie în memoria computerului. Acest lucru se datorează faptului că orice număr în virgulă mobilă este aproximat la cea mai apropiată reprezentare binară. Prin urmare, să presupunem că avem,

float a=0.87;

float b=0.87;

if(a==b){

printf("Equal \n");

} else {

printf("Not equal \n");

}

Șanse sunt, „Nu este egal” va fi tipărit. Deci, acum avem o întrebare. Cum verificăm egalitatea a 2 numere în virgulă mobilă?

Aici apare 1e-12. O diferență de mai puțin de 1e-12 între 2 numere în virgulă mobilă este considerat suficient de scăzut pentru ca acestea să fie egale. Prin urmare, în a doua macrocomandă verifică dacă valoarea absolută a a este mai mică de 1e-12. Programul ar putea arăta astfel: / p>

float a=0.87;

float b=0.87;

if(zero(a-b)){

printf("Equal \n");

} else {

printf("Not qqual \n");

}

Acest lucru este garantat pentru a imprima „Egal”.

Sper că ajută.

Răspuns

Ei bine, dacă nu-i pasă deloc – chiar și suficient pentru a discuta – sarcina ta este imposibilă.

Dacă este dispus să vorbească, dar nu dorește să privească sau să afle despre cod, încercați să jucați acest joc cu el: sunteți un robot fără autonomie. Slujba lui este să te facă să te ridici de pe canapea, să mergi la bucătărie și să faci patru sandvișuri cu unt de arahide și jeleu. Va trebui să facă acest lucru dându-vă comenzi în limba engleză.

Înțelegeți acțiuni precum „mergeți la” și „luați cuțitul din sertar”, așa că el nu trebuie să vă spună cum să mișcați fiecare mușchi și înțelegeți ce obiecte sunt, așa că el nu „t trebuie să definim „cuțit”. Dar asta este limita înțelegerii tale.

Asigură-te că îi îndeplinești instrucțiunile la propriu și fă-l să o ia de la capăt, de fiecare dată când rezultatul nu reprezintă patru sandvișuri PB&J.

„Ridică-te și mergi spre bucătărie”

Te ridici și mergi până la peretele care separă bucătăria de living .

„Arg! Adică să te ridici și să mergi la intrarea în bucătărie.”

Faceți acest lucru.

„Scoateți pâinea din dulap”

V-ați gheară la ușa dulapului, neputând extrage pâinea din ea.

„Deschide ușa!”

Deschideți ușa cuptorului.

„Adică deschideți ușa dulapului!”

Faceți acest lucru.

„Scoateți pâinea.”

Bateți pâinea din dulap și pe podeaua bucătăriei …

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *