Paras vastaus
Liukulukujen numeroita ei ole tallennettu tarkasti tietokoneen muistiin. Tämä johtuu siitä, että mikä tahansa liukuluku on likimääräistä lähinnä olevaa binääriesitystä. Oletetaan siis, että meillä on
float a=0.87;
float b=0.87;
if(a==b){
printf("Equal \n");
} else {
printf("Not equal \n");
}
Mahdollisuudet ovat ”Ei tasa” tulostetaan. Joten nyt meillä on kysymys. Kuinka tarkistamme kahden liukuluvun yhtäläisyyden?
Tässä tulee kuva 1e-12. alle 1e-12 kahden liukuluvun välillä pidetään riittävän pienenä, jotta ne olisivat yhtä suuria. Siksi 2. makrossa se tarkistaa, onko a: n absoluuttinen arvo alle 1e-12. Ohjelma saattaa näyttää tältä:
float a=0.87;
float b=0.87;
if(zero(a-b)){
printf("Equal \n");
} else {
printf("Not qqual \n");
}
Tämä on taattu tulostamaan ”Equal”.
Toivon sen auttaa.
Vastaa
No, jos hän ei välitä lainkaan – edes tarpeeksi keskustelemaan siitä – tehtäväsi on mahdoton.
Jos hän on halukas puhumaan, mutta ei halua katsoa tai oppia koodia, kokeile pelata tätä peliä hänen kanssaan: sinä olet robotti, jolla ei ole itsenäisyyttä. Hänen tehtävänään on saada sinut nousemaan sohvalta, menemään keittiöön ja tekemään neljä maapähkinävoita ja hyytelövoileipaa. Hänen on tehtävä tämä antamalla sinulle englanninkielisiä komentoja.
Ymmärrät toimintoja, kuten ”kävele” ja ”veitsi vetolaatikosta”, joten hänen ei tarvitse kertoa sinulle, kuinka jokaista lihasta liikutetaan, ja sinä ymmärrät esineitä, joten hän ei t täytyy määritellä ”veitsi”. Mutta se on ymmärryksenne raja.
Varmista, että suoritat hänen ohjeet kirjaimellisesti, ja anna hänen aloittaa alusta, aina kun tulos ei ole neljä PB & J-voileipää.
”Nouse ylös ja kävele keittiöön”
Nouset ylös ja kävelet keittiön ja olohuoneen erottavan seinän luo. .
”Arg! Tarkoitan nousta ylös ja kävellä keittiön sisäänkäynnille.”
Teet niin.
”Poista leipä kaapista”
Kynsit kaapin ovea etkä voi purkaa siitä leipää.
”Avaa ovi!”
Avaat uunin oven.
”Tarkoitan kaapin oven avaamista!”
Teet niin.
”Ota leipä pois.”
Koputat leivän ulos kaapista ja keittiön lattialle …