Berechnete Fliesskommazahl falsch --> Warum

Hi,

kurz und knapp:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(2000);
  uint32_t zahl_1 = 9187;
  float test=zahl_1 / 10000;
  Serial.println(test);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Warum ist test 0.00 und nicht wie erwartet 0,9178?

Wahrscheinlich hat das wieder irgendwas damit zu tun, dass der ESP ein 32 bit Prozessor ist und Fließkomma nicht mag? Ich komm jedenfalls grad nicht drauf.

LG Daniel

Wenn du Fließkomma Zahlen wünscht, solltest du auch mit Fließkommazahlen rechnen.

Und sowieso ein C++ Buch erwerben.
Da steht das alles drin.

Besser

float test=zahl_1 / 10000.0;

Gruß Tommy

Edit: Wie Combie schon schrieb: Dir fehlen die Grundlagenkenntnisse. Die können die Codeschnipsel und Hilfen im Forum nicht ersetzen.

Ich bin eben noch von Javascript & Co. verwöhnt.
Da geht sowas:

var zahl_1=9187;
var test=zahl_1/10000;
console.log(test);

Ausgabe Konsole: 0,9187

Wir sind hier aber in C++.

Gruß Tommy

Selten so einen Unsinn gehört....
Mit der Einstellung wirst du noch in tausend solcher Probleme stolpern.
viel Spass dabei....

Ach komm @combie ned gleich böse sein.

Meine Denkweise war halt die:

Wenn ich definiere, dass

  1. "Test" vom Typ Flieskomma sein soll
  2. "Test" als Inhalt das Ergebnis von 9187/10000 zuweise (und das ist ja 0,9187 und damit eine Fliesskommazahl)

Hätte man schon denken können, dass das dann funktioniert.
Aber nun weiß ichs ja. Wieder was dazugelernt.
Bitte nicht böse nehmen :slight_smile:

Also einer Sprache, die beim 31.02.2022 kein ungültig gibt, sondern einfach weiter in den März zählt.
Will man das?

Gruß Tommy

Böse...
Wer ist denn böse...

Du wiederholst jetzt zum dritten mal in diesem Thread den gleichen Fehler!

Ich kann dir sagen, dass deine Projektionen falsch sind.
Und nein, C++ wird sich dir nicht anpassen.
Da kannst du dir ausdenken was du willst.

Sagen wirs so: Jede Sprache hat ihre Vor- und Nachteile bzw. ihre Berechtigung.
Ich persönlich programmiere gerne mit Javascript.

Und auch mit PHP

$zahl_1=9187;
$test = $zahl_1 / 10000;

echo $test;

Aber an C++ muss ich mich eben erst gewöhnen.
Da läuft das definitiv "sauberer", was ja auch gut ist.
Wahrscheinlich sind PHP u nd Javascript da zu schlampig unterwegs.

wenn nicht festgelegt, wird int gerechnet.
float test=zahl_1/10000.0;
Da ist ein float drin.

Man könnte meinen, dass du verstanden hast, dass PHP und JS andere Sprachen als C++ sind.
Aber damit täuscht du dich offensichtlich nur selber.

Warum machst du nicht den nächsten logischen Schritt und lernst die Sprache, welche du HIER verwenden willst?

Und nein, das geht nicht über ausprobieren, hier komische Fragen stellen und gewöhnen, sondern durch Buch lesen! Kundig machen.
Von mir aus auch ein Online Buch!

Merke:
C++ dürfte die komplizierteste/schwierigste Sprache sein, welche heutzutage zum Einsatz kommt.

1 Like

Aber auch die Schönste/Beste :wink:

Gruß Tommy

Und die mächtigste!
(direkt nach Forth)

Mit der habe ich nur mal etwas rum gespielt. Nie wirklich real genutzt.
Man muss da völlig umdenken wegen des Stack-Prinzips (UPN?)

Gruß Tommy

Völlig umdenken!

Vereinfacht gesagt:

  • In den "anderen" Sprachen z.B. C, Basic, C++, Paskal, JS uvw. muss man das Problem solange anpassen, bis man es in der Sprache abfassen kann.
  • In Forth passt man die Sprache solange an, bis sie das Problem optimal abbildet

Ja und da habe ich nach den ersten Tests aufgehört. Ich habe schon auf Z80 mit Forth-Experimenten angefangen.

Gruß Tommy

Ich auch!

Hatte einige Projekte im Feld!
Das letzte mir bekannte ist vor 2 Jahren außer Betrieb gegangen.
Hat ca 30 Jahre ohne irgendwelche Wartungsarbeiten durchgehalten.
Lief allerdings auf einem IBM XP, ohne Festplatte.

Übrigens, Forth findet sich immer noch im GNU Lieferumfang für Linux.
Auch Postscript, ein Forth Dialekt, ist noch im täglichen Weltweiten Einsatz
Ebenso: Open Firmware – Wikipedia
Also keinesfalls tot, nur abgetaucht.

Hier mal Lesestoff:

http://thinking-forth.sourceforge.net/

Danke, schaue ich mir an, wenn Zeit ist (wann haben Rentner Zeit? :wink: )

Gruß Tommy

Niemals, ja doch, wenn die nicht mehr Existieren