Komisches Ergebnis bei Rechnung

Hi,

ich habe folgendes Problem. Ich habe folgende Rechnung:

<span class="syntaxdefault"><?php<br /><br />echo </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">107.84 </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 2</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">107.84 </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">  </span><span class="syntaxkeyword">+</span><span class="syntaxdefault">  </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">107.84 </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">107.84 </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">?></span>

Es kommt „-2.8421709430404E-14“ heraus. Müsste da nicht eigentlich „0“ rauskommen? :whata:

Vielen Dank für die Hilfe :p

Das ist doch fast 0, oder? :ps:

Das ist … naja normal ist es nicht so wirklich, aber schau mal hier.

Abhilfe schafft für gewöhnlich das Runden.

Hab das ganze mal in C++ nachgestellt, interesanterweise tritt das Verhalten nur bei double-precisions auf, bei gewöhnlichen floats nicht.

//Nachtrag:

Vielen Dank für die Antworten.

Wenn ich das runde, wird es Null, klar, aber mich interessiert eher der Umstand, warum es zu dieser sehr kleinen Zehnerpotenz kommt. Das Problem scheint nur “am Computer” zu erscheinen. Mit sämtlichen wissenschaftlichen Grafik-Rechnern (z.B. der Voyage 200) kommt ordnungsgemäß Null heraus. Also hat hier jemand eine Idee, warum der Computer diesen Wert errechnet, denn ich denke, er hat hierzu einen bestimmten Grund oder einen Umstand. Ich finde man sollte dem “Problem” nachgehen und es nicht einfach “wegrunden”, zumal auch allzu kleine Ungereimtheiten bei meinem aktuellen Programm nicht erwünscht sind. Sprich, ich muss mich auf die Ergebnisse verlassen können :slight_smile:

Vielen Dank

Rechnet ein Computer nicht mit mehr Stellen als ein Taschenrechner?
Ich mein Taschenrechner neigen doch eh dazu zu runden (der Casio fx-82es shcmeißt btw auch null aus)

Dann lies den von zvn schon verlinkten Wikipedia-Artikel, da steht’s nämlich drin.