ich hätte mal eine Frage bezüglich der Genauigkeit der Berechnungen von Arduino.
Ich dividiere innerhalb der Arduino Umgebung zwei float-Werte und lasse mir diese ausgeben (auf 4 Nachkommastellen). Wenn ich die selbe Division jetzt mittels Excel durchführe bekomme ich jedoch unterschiedliche Divisionsergebnisse.
z.B. (-9,1514)/(-0,1748)
Excel liefert mir 52,3535
Arduino liefert mir 52,3423
Ich habe mir jetzt überlegt, dass es vielleicht daran liegen könnte, dass Arduino die Float-Werte mit 32Bit speichert und Excel mit 64 Bit.
Bin mir da aber wirklich noch unsicher und da es Teil einer Projektarbeit ist, wäre es nicht schlecht, wenn meine Behauptung stimmt
Würde mich freuen, wenn mir jemand erklären könnte, woran das wirklich liegt bzw. mir zustimmt
Ich habe mir jetzt überlegt, dass es vielleicht daran liegen könnte, dass Arduino die Float-Werte mit 32Bit speichert und Excel mit 64 Bit.
Bin mir da aber wirklich noch unsicher und da es Teil einer Projektarbeit ist, wäre es nicht schlecht, wenn meine Behauptung stimmt
Deine Vermutung ist richtig
Auch das Excel-Ergebnis ist übrigens nur ein Näherungswert.
Und woher du z.B. die -0,1748 hast, will ich gar nicht wissen
In C++ gibt es die Datentypen double und float. Berechnungen werden mit double gemacht.
Bei richtigen Rechnern sind das 64 bzw. 32 bit Gleitkommazahlen, und die Berechnungen macht die CPU in Hardware, bei 8bit - Arduinos müssen float Berechnungen in Software gemacht werden und double sind auch nur 32 bit Zahlen (beim avr-gcc Compiler).
Und long double.
Welches aber meist nur ein Alias für double ist.
Eigentlich nur bei µP mit extra breiter FPU hat long double mehr signifikante Stellen.