Dziś zaczniemy cytatem. Jak ktoś wie z czego to i kto to mówi to pogratulować dobrego gustu 🙂
Czemu nie ma prądu? Bo u nas nie ma minusów, tylko same plusy…
A czemu taki cytat? A no dlatego, że chciałem wykonać wydawałoby się banalną czynność wyświetlenia wartości double z ‘+’ z przodu.
Nic prostszego powiecie. Szybkie zerknięcie do dokumentacji formatów, przy żadnym nie widzę, aby było coś napisane, odnośnie wyświetlania ‘+’. No niech będzie zrobię swój…
Chwila kodowania i mam:
double plus = +123.5;
var nf = new NumberFormatInfo {PositiveSign = “+”};
Console.WriteLine(plus.ToString(nf));
Jednak wynik niezadowalający…
Czyżbym jednak coś źle robił. Zobaczmy co o tej właściwości pisze MSDN.
This property is used only for parsing numeric strings, not for formatting.
Pogrubienie moje
Czyli rzeczywiście podejście złe. Zobaczmy jednak czy podobnie piszą o NegativeSign.
Szybkie wertowanie “stron” i zero komentarza. Weryfikacja w kodzie potwierdza, iż znak dla liczb ujemnych możemy zmienić. Nie ma to jak spójny framework :/.
No cóż, nadal problem jest. Jak zatem możemy uzyskać tak prostą czynność jak wyświetlenie znaku ‘+’ przed liczbą?
Musimy podjeść nieco z drugiej strony.
double plus = +123.5;
Console.WriteLine(string.Format(“{0:+0.#####;-0.#####}”, plus));
Jeśli ktoś nie rozumie tego zapisu formatu to tylko powiem, że pierwsza maska stosuje się do wartości >=0 a druga MSDN – Custom Numeric Format Strings, rozdział The “;” Section Separator.
Miłego czytania 🙂
Founder of Octal Solutions a .NET software house.
Passionate dev, blogger, occasionally speaker, one of the leaders of Wroc.NET user group. Microsoft MVP. Podcaster – Ostrapila.pl