Forum: Compiler & IDEs Bin ich blöd? Division und dtostrf


von Florian (Gast)


Lesenswert?

Der folgende Code klappt:

komma=10*0.01;
dtostrf (komma, 6, 3, texte);
lcd_writetext (texte);  // Eigen, tut was es soll

=> Ausgabe: 0.100

mit
char texte[10];
double komma;

So, jetzt wird's komisch:

komma=10/100;
dtostrf (komma, 6, 3, texte);
lcd_writetext (texte);  // Eigen, tut was es soll

=> Ausgabe 0.000

Wo ist da mein Brett vor'm Kopf?

von Irgwer (Gast)


Lesenswert?

also mit der Funktion dtostrf hat dein Problem nichts zu tun.

Du berechnest komma mittels einer Division zweier Integer-Konstanten.
Das Ergebnis einer Integer-Division ist ebenfalls ein Integer-Wert und
damit gehen eventuelle Nachkommastellen verloren.

funktionieren würde:

komma = 10.0/100.0;

oder

komma = 10/100.0;

oder

komma = 10.0/100;

oder ganz simpel:

komma = 0.1;

von Florian (Gast)


Lesenswert?

Ich sag's ja "Brett". Casten würde ja auch helfen. Argh!
Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.