in C habe ich ein Phänomen, 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 Zahlen und andererseits mit sehr kleinen Zahlen, wodurch die Genauigkeit, die float kann, auch vollständig ausnutzt.
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