Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich erkärs Dir ...
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. Du rechnest einerseits mit großen Zahle und andererseits mit sehr kleinen Zahlen, wodurch die Genauigkeit, die float noch kann auch auslutschts.
**Offenbar rundet Dein Kompiler bzw. dessen Kompilat bei jeder Zuweisung an eine Variable** - was er/es bei der Kettenoperation gerade nicht macht und hat am Ende eine Zahl deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).
Warum ich mich verarscht gefühlt habe: Könnte eine Testfrage nach Kapitel 4 ("Datentypen") in "C-Grundlagen" sein.
Google weiß alles a.k.a. Tagwächter
Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich erkärs Dir ...
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. Du rechnest einerseits mit großen Zahle und andererseits mit sehr kleinen Zahlen, wodurch die Genauigkeit, die float noch kann auch auslutschts.
**Offenbar rundet Dein Kompiler bzw. dessen Kompilat bei jeder Zuweisung an eine Variable** - was er/es bei der Kettenoperation gerade nicht macht und hat am Ende eine Zahl deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).
warum ich mich verarscht gefühlt habe: Könnte eine Testfrage nach Kapitel 4 ("Datentypen") in "C-Grundlagen" sein.
Google weiß alles a.k.a. Tagwächter
Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich erkärs Dir ...
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. **Offenbar rundet Dein Kompiler bzw. dessen Kompilat bei jeder Zuweisung an eine Variable** - was er/es bei der Kettenoperation gerade nicht macht und hat am Ende eine Zahl deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).
Google weiß alles a.k.a. Tagwächter
Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich erkärs Dir ...
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. **Offenbar rundet Dein Kompiler bzw. dessen Kompilat bei jeder Zuweisung an eine Variable** - was er/es bei der Kettenoperation gerade nicht macht und hat am Ende eine Zahl deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).
Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich erkärs Dir ...
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. **Offenbar rundet Dein Kompiler bei jeder Zuweisung an eine Variable** - was er bei der Kettenoperation gerade nicht macht und hat am Ende eine Zahl deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).
Ich erkärs Dir ...
bearbeitet von Google weiß alles> in C habe ich ein [Phänomen](http://ideone.com/96kOQD), welches nach einer Erklärzung schreit.
> Wer hilft mir mal auf die Sprünge?
Ich geb Dir noch einen Tipp:
~~~
Test A5: (Addition schrittweise):0.000000000000000000000
Test B: (Addition direkt):0.000031746028980705887
~~~
Das sieht aus wie ein Rundungsfehler. Die Zahlen werden ja binär mit endlichem Platz gespeichert und können also nicht beliebig genau sein. **Offenbar rundet Dein Kompiler bei jeder Zuweisung an eine Variable** - was er bei der Kettenoperation natürlich nicht macht und am Ende eine Zahl hat, deren Abweichung zum Runden zu groß ist.
Im Ergebnis hast Du dann die Abweichung (in Test B) vom mathematisch richtigem Ergebnis (nach A5).