PDA

Visualizza la versione completa : [C++] Salvare i numeri con le virgole!


zannas
17-02-2012, 18:21
Ciao a tutti, volevo semplicemente far salvare i risultati di alcuni calcoli con questo formato:
123,456
anzich
123.456

come posso fare?

shodan
17-02-2012, 18:32
Il modo pi semplice trasformarlo in stringa e sostituire il carattere.
Il modo contorto di cambiare momentaneamente il locale della formattazione (che alla fine,pi o meno, si comporta come il primo modo).

ramy89
17-02-2012, 18:32
I float vengono memorizzati in binario, quello che chiedi semmai di stamparli diversamente.
Prendi la parte intera e la memorizzi in un intero.Prendi la parte frazionaria e la memorizzi in un intero moltiplicandola per 10^ numero ci cifre significative che vuoi stampare.
Stampi i due interi separandoli da ",".
Esempio con 3 cifre dopo la virgola:



void print(float f)
{
float temp=f-static_cast<int>(f);
int pint,pf;
pint=static_cast<int>(f);
pf=static_cast<int>(temp*1000);
cout << pint << "," << pf << endl;
}

oregon
17-02-2012, 20:29
Ma prima di tutto, che vuol dire per te "salvare" ?

zannas
18-02-2012, 02:06
intendo "stamparli" in un file..

MItaly
18-02-2012, 02:26
Se li vuoi salvare usando le impostazioni di localizzazione italiane puoi fare semplicemente:


stream.imbue(std::locale("it-IT"));

(dove stream lo stream su cui stai scrivendo)
se vuoi usare semplicemente le impostazioni locali (scelte dall'utente):


stream.imbue(std::locale(""));

oregon
18-02-2012, 09:35
Originariamente inviato da MItaly
Se li vuoi salvare usando le impostazioni di localizzazione italiane puoi fare semplicemente:


stream.imbue(std::locale("it-IT"));


Ovvero anche per il video, ad esempio



cout.imbue(std::locale("it-IT"));

cout << 1.99 << endl;

Loading