Avatar billede Slettet bruger
26. september 2006 - 11:27 Der er 8 kommentarer og
1 løsning

Kan jeg udskrive en float som 1,234 fremfor 1.234??

Kan jeg udskrive en float som 1,234 fremfor 1.234, dvs at jeg skal bruge komma fremfor punktum!!??
Avatar billede tokelil Nybegynder
26. september 2006 - 12:56 #1
I C kan du bruge funktionen setlocale til ændre indstillinger for regionale enheder i den pågældende tråd. F.eks:
    setlocale( LC_ALL, "Danish" );
    sprintf(strTest, "%f", 0.123f);

C++ er desuden klassen std::locale der kan bruges som argument til mange af standard funktionerne for strenge mv.
Avatar billede Slettet bruger
26. september 2006 - 13:04 #2
Vil det sige at
printf(" tal %.2f", number);

ændres til
setlocale( LC_ALL, "Danish" );
printf(" tal %.2f", number);

dvs bare skal have denne ene linie med?
Avatar billede tokelil Nybegynder
26. september 2006 - 13:36 #3
Så snart du har kaldt setlocale( LC_ALL, "Danish" ), ændres de regionale indstillinger for den tråd hvor funktionen er kaldt fra. Alle kald til funktioner der udskriver formatteret data vil herefter udskrive efter den nye "locale", istedet for standard "C" locale.

Det er altså kun nødvendigt at kalde setlocale en gang i dit program, hvis det altid skal udskrive "dansk" formattering.
Formatteringen kan også ændres for visse grupper af funktioner. F.eks:
setlocale( LC_NUMERIC, "Danish" );
ændre kun formattering for rutiner der formattere numre. (som printf)
Avatar billede Slettet bruger
26. september 2006 - 14:59 #4
Det ser desværre ikke ud til at virke :/
Avatar billede tokelil Nybegynder
26. september 2006 - 15:21 #5
Det virker fint for mig:
[code]
#include <conio.h>
#include <locale.h>

int _tmain(int argc, _TCHAR* argv[])
{
    float number = 0.1234f;

    setlocale( LC_ALL, "Danish" );
    printf(" tal %.2f", number);
   
    _getch();
    return 0;
}
[/code]
Avatar billede Slettet bruger
26. september 2006 - 15:36 #6
Virker dette hos dig?

#include <locale.h>

const float number = 0.1234;

int test(void)
{
    setlocale( LC_ALL, "Danish" );
    printf(" tal %.2f", number);
    return 0;
}
Avatar billede tokelil Nybegynder
26. september 2006 - 15:49 #7
Ja det udskriver det med "," i stedet for ".". (Efter include af stdio.h for at det kan compile selvf.)
Avatar billede Slettet bruger
15. november 2006 - 11:37 #8
Gider du lave et svar, så lukker jeg... du får point for din hjælpsomhed selvom jeg aldrig fik det løst :o)
Avatar billede tokelil Nybegynder
15. november 2006 - 16:31 #9
Ok... underligt det ikke virkede for dig. Locale burde ændre ting som disse.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester