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 🙂