Beste Antwort
Gleitkommazahlen werden im Computerspeicher nicht genau gespeichert. Dies liegt daran, dass jede Gleitkommazahl an die nächste Binärdarstellung angenähert wird. Nehmen wir daher an, wir haben
float a=0.87;
float b=0.87;
if(a==b){
printf("Equal \n");
} else {
printf("Not equal \n");
}
Chancen „Nicht gleich“ wird gedruckt. Nun haben wir also eine Frage. Wie überprüfen wir die Gleichheit von 2 Gleitkommazahlen?
Hier kommt 1e-12 ins Bild. Ein Unterschied von weniger als 1e-12 zwischen 2 Gleitkommazahlen wird als niedrig genug angesehen, um gleich zu sein. Daher prüft es im 2. Makro, ob der Absolutwert von a kleiner als 1e-12 ist. Das Programm könnte folgendermaßen aussehen:
float a=0.87;
float b=0.87;
if(zero(a-b)){
printf("Equal \n");
} else {
printf("Not qqual \n");
}
Dies wird garantiert „Equal“ drucken.
Ich hoffe das hilft.
Antwort
Nun, wenn es ihn überhaupt nicht interessiert – auch nicht genug, um darüber zu diskutieren – ist Ihre Aufgabe unmöglich.
Wenn er bereit ist zu sprechen, aber nicht bereit ist, Code anzusehen oder etwas darüber zu lernen, versuchen Sie, dieses Spiel mit ihm zu spielen: Sie sind ein Roboter ohne Autonomie. Seine Aufgabe ist es, Sie vom Sofa aufstehen zu lassen, in die Küche zu gehen und vier Sandwiches mit Erdnussbutter und Gelee zuzubereiten. Er muss dies tun, indem er Ihnen englische Befehle gibt.
Sie verstehen Aktionen wie „Gehen zu“ und „Messer aus Schublade holen“, sodass er Ihnen nicht sagen muss, wie Sie jeden Muskel bewegen sollen, und Sie verstehen, was Objekte sind, also tut er es nicht müssen „Messer“ definieren. Aber das ist die Grenze Ihres Verständnisses.
Stellen Sie sicher, dass Sie seine Anweisungen buchstäblich ausführen, und lassen Sie ihn jedes Mal neu beginnen, wenn das Ergebnis nicht vier PB & J-Sandwiches sind.
„Steh auf und geh in die Küche“
Du stehst auf und gehst zur Wand, die Küche und Wohnzimmer trennt .
„Arg! Ich meine, steh auf und gehe zum Eingang der Küche.“
Sie tun dies.
„Entfernen Sie das Brot aus dem Schrank“
Sie kratzen an der Schranktür und können kein Brot daraus ziehen.
„Öffne die Tür!“
Sie öffnen die Ofentür.
„Ich meine, öffnen Sie die Schranktür!“
Sie tun dies.
„Holen Sie das Brot heraus.“
Sie schlagen das Brot aus dem Schrank auf den Küchenboden …