ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Tausenderstellen trennen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
22.05.2003, 15:06 Uhr THDany Posts: 38 Nutzer |
Mahlzeit! Gibt es unter C eine Funktion mit der ich in double variablen die Tausenderstellen trennen kann? Dany [ - Antworten - Zitieren - Direktlink - ] |
22.05.2003, 16:49 Uhr Inferno Posts: 157 Nutzer |
Meinst Du zur Ausgabe z.B. auf den Bildschirm so wie double a = 123456789 als 123,456,789.0 auszugeben? [ - Antworten - Zitieren - Direktlink - ] |
23.05.2003, 11:27 Uhr THDany Posts: 38 Nutzer |
Ja genauso ist es. [ - Antworten - Zitieren - Direktlink - ] |
23.05.2003, 14:48 Uhr Inferno Posts: 157 Nutzer |
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. [ - Antworten - Zitieren - Direktlink - ] |
23.05.2003, 15:16 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
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. [ - Antworten - Zitieren - Direktlink - ] |
23.05.2003, 16:50 Uhr Inferno Posts: 157 Nutzer |
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. ] [ - Antworten - Zitieren - Direktlink - ] |
24.05.2003, 23:08 Uhr THDany Posts: 38 Nutzer |
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? [ - Antworten - Zitieren - Direktlink - ] |
25.05.2003, 13:03 Uhr Inferno Posts: 157 Nutzer |
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. [ - Antworten - Zitieren - Direktlink - ] |
25.05.2003, 14:04 Uhr THDany Posts: 38 Nutzer |
Das ist mein TH-Verbindung. Kannst du dir auf http://www.th-home.de runterhladen. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Tausenderstellen trennen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |