hallo ich habe ein programm geschrieben der einen spannungswert ins lcd brint nun steht aber nicht z.b. 4,521 sondern 4521 wie bekomme ich das komma da rein mit dem tutorial komme ich nicht zurecht hier ein ausschnitt meines programmes danke schon mal für eure hilfe xtr=buffer; xtr = ((long)buffer*5000)/1024; utoa(xtr,Buffer,10); lcd_goto(0,1); lcd_write_s( Buffer );
Wie wärs mit Division und Rest der Division. Schau noch mal ins Mathebuch.
1 | xtr=buffer; |
2 | xtr = ((long)buffer*5000)/1024; |
3 | utoa(xtr,Buffer,10); |
4 | lcd_goto(0,1); |
5 | if (xtr < 1000) |
6 | {
|
7 | lcd_write_s("0,"); |
8 | lcd_write_s(Buffer); |
9 | } else { |
10 | lcd_write_c(Buffer[0]); // schreibt _ein_ zeichen |
11 | lcd_write_c(','); |
12 | lcd_write_s(&Buffer[1]); |
13 | }
|
... hat aber doch schon jemand in einem deiner Threads geschrieben...
S. W. wrote: > nun steht aber nicht z.b. 4,521 sondern 4521 wie bekomme ich das > komma da rein mit dem tutorial komme ich nicht zurecht hier ein > ausschnitt meines programmes danke schon mal für eure hilfe Offensichtlich benutzt du Fixpunkt Arithmetik und dein Skalierfaktor ist 1000 4521 dividiert durch 1000 ergibt dir den Vorkommaanteil, nämlich 4 Der Rest, der bei der Division entsteht, ergibt den Nachkommaanteil, nämlich 521 In C
1 | vorkomma = 4521 / 1000; |
2 | nachkomma = 4521 % 1000; |
( % ist in C der Modulo-Operator. Er gibt dir den Rest der bei einer Division entsteht. ) Jetzt hast du aber das Problem, dass du beim Nachkommaanteil die führenden Nullen nicht einfach unter den Tisch fallen lassen darfst. 4050 % 1000 -> 50 Diese Zahl würde ansonsten als 4.50 angezeigt werden, anstelle von 4.050 Entweder du siehst dir also das Ergebnis des Divisionsrestes an und entscheidest wieviele 0-en du nach dem Komma noch zusätzlich einschieben musst oder du verwendest eine Funktion, die auch führende Nullen erzeugen kann, wenn man sie dazu auffordert.
1 | sprintf( buffer, "%d,03d", xtr / 1000, xtr % 1000 ); |
würde das zb machen. Ich sagte schon heute Nacht: Ohne Literatur wirst du mit deiner C-Programmiererei nicht weit kommen. printf und Konsorten können eine ganze Menge Dinge erledigen. Aber das kann dir niemand in ein paar Forumspostings beibringen. Da wirst du wohl oder übel mal die 10 oder 15 Seiten in einem Buch mal durcharbeiten müssen und die entsprechenden Übungen machen müssen um zu wissen was genau man mit printf und Konsorten gut erledigen kann.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.