C# - Számok formázási lehetőségei

forráskód letöltése
Szinte minden alkalmazásban előforduló feladat, hogy adott egy vagy több szám, melyet meg kell jelenítenünk a felhasználó számára valamilyen formában. Ekkor a számot konvertálnunk kell sztringgé, de nem mindegy, hogy azt milyen formában tesszük, hiszen teljesen másképp kell kiírnunk egy egész számot, mint egy törtet. Megint más a helyzet, ha ez a számérték egy pénzösszeget jelöl, arról nem is beszélve, hogy esetleg nem forintban, hanem valamilyen valutában.
Konverzióra sokféle lehetőségünk van, válasszuk most a legegyszerűbben a ToString függvényt. Ennek paraméterében megadható egy formázási sztring, mely alapján az adott szám szövegessé alakításának szabályait fogalmazhatjuk meg, előre adott szabályokat felhasználva. Nézzünk erre példákat. Adott két változónk, melyek double és Int64 típusú számokat tárolnak, amelyeket szövegessé szeretnénk alakítani.
 double d;
 Int64 i;
Ha a számot pénzként kezeljük és ennek megfelelően szeretnénk formázni, akkor a C karaktert kell használnunk. Alapesetben mindig az aktuális nyelvi beállítástól függ a forma, ha ettől el szeretnénk térni, akkor a ToString második paraméterében egy CultureInfo osztály példányának átadásával ezt elérhetjük.
 d.ToString("C"));
 d.ToString("C", new CultureInfo("en-US")));
Decimális szám formátum használatához a D karaktert használhatjuk. Ha ez után megadunk egy számot is, akkor a konvertált szöveg annyi karakter hosszú lesz, mint az itt megadott szám. Ha a konvertálandó szám nem lenne ilyen hosszú sztringgé alakítva, akkor a ToString nullákkal egészíti ki a visszaadott sztringet.
 i.ToString("D"));
 i.ToString("D16"));
Exponenciális alakra az E karakter megadásával hozhatjuk a számot. Ha kis e karaktert használunk, akkor a visszakapott sztringben is kis e karakter jelenik meg. Ha az E karakter után számot is használunk, akkor ezzel megszabhatjuk, hogy hány számjegy álljon a tizedes pont után. Ha a konvertálandó szám nem lenne ilyen hosszú, akkor nullákkal kerül kiegészítésre.
 d.ToString("E"));
 d.ToString("e"));
 d.ToString("E8"));
A fix pontos konverzió eléréséhez az F karakter használható. Itt szintén megadhatunk egy számot is, mely a tizedes jegyek számát határozza meg. A konvertálandó szám ekkor a megfelelő módon kerekítve lesz.
 d.ToString("F"));
 d.ToString("F0"));
 d.ToString("F1"));
Alapesetben a G karakter használható, mellyel általánosan megformázhatunk bármilyen számot.
 d.ToString("G"));
 d.ToString("G2"));
Százalék formára konvertálhatjuk a számot a P karakter megadásával.
 d.ToString("P"));
Hexadecimális formára az X karakter megadásával hozhatunk egy számot. Ha kisbetűt használunk a visszaadott sztringbe is kisbetűk kerülnek. Ha megadunk egy számot is, akkor ezzel megszabjuk, hogy a visszaadott sztring milyen hosszú legyen. Ha a konvertált szám nem érné el ezt a hosszúságot, akkor nullákkal kerül kiegészítésre.
 i.ToString("X"));
 i.ToString("X8"));
 i.ToString("x8"));