amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Tausenderstellen trennen [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2003-05-22, 15:06 h

THDany
Posts: 38
User
Mahlzeit!

Gibt es unter C eine Funktion mit der ich in double variablen die Tausenderstellen trennen kann?

Dany

[ - Answer - Quote - Direct link - ]

2003-05-22, 16:49 h

Inferno
Posts: 157
User
Meinst Du zur Ausgabe z.B. auf den Bildschirm so wie

double a = 123456789

als 123,456,789.0 auszugeben?


[ - Answer - Quote - Direct link - ]

2003-05-23, 11:27 h

THDany
Posts: 38
User
Ja genauso ist es.

[ - Answer - Quote - Direct link - ]

2003-05-23, 14:48 h

Inferno
Posts: 157
User
Dann wirst Du ums selber-machen wohl nicht drumherum kommen. Die Formatierungen von printf erlauben nur Anzahl von Vor- und Nachkommanstellen. Es gibt zwar 'nen "Alternative Output Format" mittels des "#" - Zeichens, aber der hat bei printf eine andere Bedeutung als bei Basic ....


Ciao,

Inf.

[ - Answer - Quote - Direct link - ]

2003-05-23, 15:16 h

DariusBrewka
Posts: 899
[Banned user]
Ist eigentlich auch nicht so schwer, zumindestens wenn der Zahlenbereich eingeschränkt ist (z.b. max 999 Milliarden)

z.B.

wert = 123456789123.12;

rest = irgendeine funktion die den Rest von Wert bestimmt (weiss nicht welche c(++) funktion das tut)

mrd = (int) (wert / 1000000000);
wert -= (mrd*1000000000);

mil = (int) (wert / 1000000);
wert -= (mil*1000000);

tausender = (int) (wert / 1000);
wert -= (tausender*1000);

den rest müsstest du noch so hinbiegen, dass die 0 am anfang abgeschnitten wird.



[ - Answer - Quote - Direct link - ]

2003-05-23, 16:50 h

Inferno
Posts: 157
User
So, hat ein bisserl gedauert:

vorsicht, tippsfehler ....

code:
#include <stdio.h>

void double2string(char *buffer, int nachkomma, double value) {
    char buf2[128];
    char *buf = buf2;

    sprintf(buf2, "%.0f", value);
    
    int sl = strlen(buf2);
    while(sl > 0) {
        *buffer++ = *buf++;
        sl--;
        if(((sl % 3) == 0) && (sl)) *buffer++ = ',';
    }
    *buffer++ = '.';

    // Jetzt nachkommastellen:
    sprintf(buf2, "%f", value);

    buf = buf2;
    while(*buf++ != '.');

    while(*buf && nachkomma--) *buffer++ = *buf++;
    *buffer++ = 0;
}

int main() {
    char buffer[1024];
    double2string(buffer, 3, 1234567890.123456);
    printf("Resultat: %sn", buffer);
}



sollte ausgeben

Resultat: 1,234,567,890.123

Viel Spaß,

Inf.



[ Dieser Beitrag wurde von Inferno am 23.05.2003 editiert. ]

[ Dieser Beitrag wurde von Inferno am 23.05.2003 editiert. ]

[ - Answer - Quote - Direct link - ]

2003-05-24, 23:08 h

THDany
Posts: 38
User
wow danke das funzt ja einwandfrei.

Ich habe die Funktion jetzt einfach so in mein Programm übertragen. Damit sollte ich dich natürlich auch in die Danksagung aufnehmen. Was würde dir denn zusagen was ich da hinschreibe?

[ - Answer - Quote - Direct link - ]

2003-05-25, 13:03 h

Inferno
Posts: 157
User
Was ist es denn für ein Programm ???

Ach ja:

Du kannst noch nach der Nachkomma-While-Schleife ein

while(nachkomma--) *buffer++ = '0';

anhängen, wenn Du möchtest, daß immer so viele Nachkommastellen ausgegeben werden, wie Du im Parameter angibts ...

Ciao,

Inf.

[ - Answer - Quote - Direct link - ]

2003-05-25, 14:04 h

THDany
Posts: 38
User
Das ist mein TH-Verbindung. Kannst du dir auf http://www.th-home.de runterhladen.

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Tausenderstellen trennen [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.