![]() |
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. |
![]() |