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.


Anmelden zum Antworten