Ausgabe von 28,7 statt 28.7?
-
Hallo,
wie kann ich auf dem Bildschirm mit dem
printf("%f3.1",dummy);
Befehl Zahlen mit Kommas an Stelle von Punkten auf dem Bildschirm ausgeben?Sebastian
-
sprintf(temp,"%f3.1",dummy); *strchr(temp,'.')=','; printf(temp);
So müsste das eigentlich klappen.
[edit]jo, klappt, aber temp string unbedingt vorher erzeugen![/edit]
[ Dieser Beitrag wurde am 10.01.2003 um 13:38 Uhr von ºgrimmsenº
editiert. ]
-
sprintf(temp,"%3.1f",dummy);
wenn schon...
-
Das ist aber reichlich dreckig. Entweder man versucht eine deutsche Locale zu auf dem System zu finden (man setlocale), oder so:
#include <locale.h> #include <stdio.h> int main (void) { struct lconv* p = localeconv (); p->decimal_point = ","; return !printf ("%g", 23.6); }
-
Daniel E. schrieb:
Das ist aber reichlich dreckig. Entweder man versucht eine deutsche Locale zu auf dem System zu finden (man setlocale), oder so:
#include <locale.h> #include <stdio.h> int main (void) { struct lconv* p = localeconv (); p->decimal_point = ","; return !printf ("%g", 23.6); }
Mach ich irgendwas falsch oder wieso funzt das bei ofstream nicht? :
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { ... struct lconv* conv = localeconv(); conv->decimal_point = ","; switch( message ) { ... case IDM_\1: { ofstream Ziel; Ziel.open("d:\\dingsda.txt"); Ziel<<3.45; Ziel.close(); } ... ...
In der Datei steht dann 3.45 statt wie erwartet 3,45
-
C++ hat seine eigenen locales. Normalerweise ist das sinnvollste, das system default zu benutzen, also:
#include <iostream> #include <locale> int main() { std::cout.imbue(std::locale("")); std::cout << 3.14159 << std::endl; }
Bei deutscher Systemeinstellung gibt das 3,14159 aus.