Jaké je použití 1e-12 v konkurenčním programování?


Nejlepší odpověď

Čísla s plovoucí desetinnou čárkou nejsou přesně ukládána do paměti počítače. Je to proto, že jakékoli číslo s plovoucí desetinnou čárkou je aproximováno nejbližší binární reprezentaci. Předpokládejme tedy, že ano,

float a=0.87;

float b=0.87;

if(a==b){

printf("Equal \n");

} else {

printf("Not equal \n");

}

Šance jsou, Vytiskne se „Nerovná se.“ Takže nyní máme otázku. Jak zkontrolujeme rovnost 2 čísel s plovoucí desetinnou čárkou?

Zde je místo, kde se do obrázku dostane 1e-12. Rozdíl méně než 1e-12 mezi 2 čísly s plovoucí desetinnou čárkou je považováno za dostatečně nízké, aby se mohly rovnat. Proto ve 2. makru kontroluje, zda je absolutní hodnota a, menší než 1e-12. Program může vypadat takto:

float a=0.87;

float b=0.87;

if(zero(a-b)){

printf("Equal \n");

} else {

printf("Not qqual \n");

}

Je zaručeno, že bude vytištěno „Rovné“.

Doufám, že pomáhá.

Odpověď

No, pokud se o něj vůbec nestará – dokonce natolik, aby o tom mohl diskutovat – váš úkol je nemožný.

Pokud je ochoten mluvit, ale není ochoten se o kódu dívat nebo se o něm dozvědět, zkuste s ním hrát tuto hru: jste robot bez autonomie. Jeho úkolem je přimět vás vstát z pohovky, jít do kuchyně a připravit čtyři arašídové máslo a želé sendviče. Bude to muset udělat tak, že vám dá anglické příkazy.

Rozumíte akcím jako „chodit“ a „dostat nůž ze zásuvky“, takže vám nemusí říkat, jak hýbat každým svalem, a rozumíte tomu, jaké objekty jsou, takže nemusí muset definovat „nůž“. Ale to je hranice vašeho porozumění.

Dbejte na to, abyste jeho pokyny plnili doslovně a přiměli ho začít znovu, pokaždé, když výsledkem nebudou čtyři sendviče PB&J.

„Postavte se a jděte do kuchyně“

Postavte se a jděte ke zdi oddělující kuchyň a obývací pokoj .

„Arg! Myslím tím vstát a jít ke vstupní cestě do kuchyně.“

Učiníte tak.

„Vyjměte chléb ze skříně“

Drápáte na dveře skříně a nemůžete z nich vyjmout chléb.

„Otevřete dveře!“

Otevřete dvířka trouby.

„Myslím tím dvířka skříně!“

Učiníte tak.

„Získejte chleba.“

Vyrazíte chléb ze skříňky na kuchyňskou podlahu …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *