Ciao a tutti, volevo semplicemente far salvare i risultati di alcuni calcoli con questo formato:
123,456
anzichè
123.456
come posso fare?
Ciao a tutti, volevo semplicemente far salvare i risultati di alcuni calcoli con questo formato:
123,456
anzichè
123.456
come posso fare?
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).
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
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:
codice: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; }
Ma prima di tutto, che vuol dire per te "salvare" ?
No MP tecnici (non rispondo nemmeno!), usa il forum.
intendo "stamparli" in un file..
Se li vuoi salvare usando le impostazioni di localizzazione italiane puoi fare semplicemente:
(dove stream è lo stream su cui stai scrivendo)codice:stream.imbue(std::locale("it-IT"));
se vuoi usare semplicemente le impostazioni locali (scelte dall'utente):
codice:stream.imbue(std::locale(""));
Amaro C++, il gusto pieno dell'undefined behavior.
Ovvero anche per il video, ad esempioOriginariamente inviato da MItaly
Se li vuoi salvare usando le impostazioni di localizzazione italiane puoi fare semplicemente:
codice:stream.imbue(std::locale("it-IT"));
codice:cout.imbue(std::locale("it-IT")); cout << 1.99 << endl;
No MP tecnici (non rispondo nemmeno!), usa il forum.