Double Wert in Char-String umwandeln



  • Hallo

    ich möchte einen Double Wert in ein char umwandeln.

    double dwert = 0.0045;
    char cwert[7];

    sprintf(cwert, "%2.4lf", dwert );

    Inhalt von cwert:
    cwert[0] = '0';
    cwert[1] = '.';
    cwert[2] = '0';
    cwert[3] = '0';
    cwert[4] = '4';
    cwert[5] = '5';
    cwert[6] = '\0';

    Das Problem ist aber, dass der das Dezimaltrennzeichen mit abspeichert. Ich möchte, dass immer 2 Stellen als Vorkommastellen und 4 als Nachkommastellen umgewandelt werden.

    So soll der Inhalt von cwert ausschauen:
    cwert[0] = '0';
    cwert[1] = '0';
    cwert[2] = '0';
    cwert[3] = '0';
    cwert[4] = '4';
    cwert[5] = '5';
    cwert[6] = '\0';

    Geht das mit sprintf? Oder wie kann man sowas machen?

    Vielen Dank
    cu
    George



  • Multipliziere den Wert mit 10000 und konvertiere ihn anschließend als int:

    double dwert=0.0045;
    char cwert[7];
    sprinft(cwert,"%06d",(int)(10000*dwert));
    


  • das Leben kann so einfach sein....

    recht herzlichen Dank
    cu
    George



  • sorry aber gleich noch ein Problem:

    wie kann man die führenden Nullen erhalten?

    So soll es aussschauen:
    cwert[0] = '0';
    cwert[1] = '0';
    cwert[2] = '0';
    cwert[3] = '0';
    cwert[4] = '4';
    cwert[5] = '5';
    cwert[6] = '\0';

    So wird es angezeigt:
    cwert[0] = ' ';
    cwert[1] = ' ';
    cwert[2] = ' ';
    cwert[3] = ' ';
    cwert[4] = '4';
    cwert[5] = '5';
    cwert[6] = '\0';



  • indem du als Format "%06d" angibst - das füllt das Ausgabefeld mit 0 auf (bzw. sollte). Wenn das nicht klappt, kannst du hinterher über den String laufen und die Leerzeichen selber in '0' umwechseln.



  • bei mir funzt es so.

    gibst du es aus oder schaust du es im debugger an?



  • super - geht wunderbar:))

    Vielen Dank nochmals an euch beiden

    Noch einen schönen sonnigen Nachmittag...


Anmelden zum Antworten