0,0125*40000=763

Hallo,
ich habe meinen Arduino letztens mal 0,0125*40000 rechnen lassen. Dabei kam heraus, dass das 764 ergeben soll. Mein Casio Taschenrechner rechnet dies ohne Probleme und auch der Rechner im Laptop packt dies ohne Problem. Hat irgendjemand eine Ahnung warum das so ist?
LG GrummHD

Woher sollen wir das wissen? Zeig uns den Sketch. Der Fehler liegt in deinem Sketch

Recht hattest du. ich habe gerade herausgefunden, dass wenn man einen int mit Serial.print(x,8); ausgibt, er irgendwelche falschen Werte sendet. Sorry mein Fehler. es lag an der Ausgabe
Vielen Dank für die Mühe

Nö, er macht das, was Du ihm gesagt hast. Er soll es in Oktalschreibweise ausgeben.
Merke: Das Problem sitzt vorm Monitor. :wink:

Gruß Tommy

Ich korrigiere: Es lag an der Ausgabe, die Ich hingeschrieben habe.

was nu? 763 oder 764?

Gegenfrage:
wenn man Serial.print(0.0125*40000) schreibt rechnet das der Compiler aus weil er Konstanten zusammenfaßt und den Kode optimiert oder der Arduino?
Grüße Uwe

Entschuldigung, die richtige Zahl ist natürlich 764. Ich hatte in der Ausgabe einfach noch Serial.println(x,8); stehen, weil ich vorher ein double mit 8 Nachkommastellen ausgegeben hatte.
Standardmäßig ist die Ausgabe in der Seriellen Schnittstelle ja auf 2 Nachkommastellen begrenzt.
Und zu der Frage: Mit dem Compiler kenne ich mich zwar noch nicht so gut aus. Ich würde aber vermuten, dass er das schon im Vorraus berechnet, da dort keine Variablen enthalten sind. Dies ist aber nur eine Vermutung und da ich so schlecht .hex Dateien lesen kann wüsste ich nicht wie man das nachprüft.
LG

Ich würde aber vermuten, dass er das schon im Vorraus berechnet, da dort keine Variablen enthalten sind. Dies ist aber nur eine Vermutung und da ich so schlecht .hex Dateien lesen kann wüsste ich nicht wie man das nachprüft.

Indem du die erzeugte *.elf Datei mit dem mitgeliefertem objdump untersuchst.
Meine Arduino IDE (habe ich ihr beigebogen) erzeugt bei jeder Kompilierung eine Assembler Datei.

Ich habe die .elf Datei jetzt auch mit diesem Disassembler zurückgedingst: Onlinedisassembler
vielen Dank

Hallo,
undwie geht das mit objdump?

Anleitung

Vielen Dank