Az lenne a kérdésem hogy iomanip vagy esetleg más segítségével ki lehet e iratni egy double számot a következoő formátumban:
"egész rész 2-es szélességgel" "," "tört rész 3-as szélességgel"
Például: 3.17 -et szeretném ilyen formában kiirni: 03,170
Megnéztem az iomanip-ban levő beállítasi lehetőségeket, de például arra nem láttam megoldást hogy
"." helyett "," legyen a tizedes jel.
Meg tudom oldalni, de szerintem nem egy túl praktikus megoldás (keletkezik némi kerekítési hiba):
...
double a=3.17;
cout << setfill('0') << setw(2) << (int)a << "," << setw(3) << (int)((a -(int)a)*1000);
...
Ennek eredménye ez lesz: 03,169
Ha valaki tud egy egyszerűbb megoldást, akkor ne kíméljen! :)
Előre is kösz: Safi
- 1436 megtekintés
Hozzászólások
sima C megoldás, ami gondolom C++-ban is ugyanígy működik:
a progi indítása előtt
export LC_NUMERIC=hu_HU
a progiban pedig:
setlocale(LC_NUMERIC, "");
double a=3.17;
printf("%06.3f", a);
- A hozzászóláshoz be kell jelentkezni
írj egy double-wrappert, aminek kell egy double konstruktor. ezen kívül kell egy
std::ostream& operator<<(std::ostream&,const double_wrapper&)
függvény - és kb így fogod kiírni:
std::cout << double_wrapper(val);
- A hozzászóláshoz be kell jelentkezni