Zahlenkonvertierung int in pseudo-float

Gast #1802181
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Variable mit dem
Wertebereich 0.0-50.0
dies wird in 0.2er Schritten geändert

Den Wert der Variable habe ich in eine int Variable gesteckt (mit 10 
Multipliziert)
-> hat die Variable x den Wert 212, so bedeutet das 21.2 usw.

Die Ausgabe mache ich wie folgt:

int temp;
char Kommazahl[10];
char Zahl[10];
char x_char;


temp = x % 10;
itoa(temp,Kommazahl);

temp = x / 10;
itoa(temp,Zahl);
strcat(Zahl,".");
strcat(Zahl,Kommazahl);
strcpy(x_char,Zahl);

//
Die Ausgabe ist funktioniert soweit.

Kann ich es noch effektiver gestalten, oder ist es OK so??
#1802214
Lesenswert?
• ▲
▼
Frank schrieb:

> Kann ich es noch effektiver gestalten, oder ist es OK so??

Definiere 'effektiv'

Grundsätzlich kannst du es so machen.
Man könnte auch mit der komplette Zahl nur 1 itoa in einen String 
machen, dann den String an der vorletzten Stelle um 1 char 
auseinanderziehen und dann den '.' einschmuggeln. Dann muss man 
allerdings bei Zahlen kleiner 0 wieder aufpassen. Eventuell muss dann 
noch 1 Null davor.

Man könnte auch mit 1 einzigem sprintf arbeiten und alles in mehr oder 
weniger einem Rutsch machen.

Ist alles relativ.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.