Czy jest jakiś sposób na określenie standardowego lub niestandardowego ciągu formatu liczbowego, aby zawsze wyświetlał znak, czy to + ve czy -ve (chociaż nie powinienem wiedzieć, co powinien zrobić dla zera!)
c#
.net
formatting
string-formatting
Craig Shearer
źródło
źródło
+#;-#
, dla wartości 0 I dostać tylko „+”, bez rzeczywistego 0. Dla mnie Chcę 0 pojawiać się jako „+0”, tak to działa:+#;-#;+0
.''
robi świetne rzeczy! Spójrz na toChanges.ToString("'('#' ▲)';'('#' ▼)';''")
:! Zaoszczędziło mi to dużo czasu i setkiif
wypowiedzi! :)+0;-#
zamiast.+#;-#;+0
Ta odpowiedź była dla mnie bardzo myląca.Uwaga: w przypadku formatowania warunkowego wartość ujemna nie otrzymuje automatycznie znaku. Musisz zrobić
źródło
+0;-#
daje ten sam wynik z czystszym kodem.Możesz także użyć ciągów formatujących w string.Format (); ciąg formatu jest oddzielony od indeksu dwukropkiem („:”)
Dla liczby {+1, -1, 0} daje to:
Możesz również użyć interpolowanego ciągu zamiast
string.Format
uzyskać ten sam wynik:źródło
+#;-#
formatu dla wartości 0+0;-#
. :)+#;-#;+0
się+#;-#
jak to czyni go bardziej zrozumiałym, że 0 zostanie sformatowana jako +0W przeciwieństwie do innych odpowiedzi wydaje się, że jeśli chcesz uzyskać +1, -1, +0 (dla argumentów 1, -1, 0), musisz użyć formatu:
lub
Jeśli użyjesz tylko
+#;-#
, wyświetli się+
(nie+0
) dla 0.Niestandardowy specyfikator „#” (na https://msdn.microsoft.com/en-us/library/0c899ak8.aspx )
Pamiętaj również, że jeśli potrzebujesz jakiejkolwiek precyzji dziesiętnej, musisz ją tak określić:
lub, jeśli nie chcesz zer zawsze się wyświetlać, tak:
źródło
Dla wyrażenia liczbowego dowolnego typu:
Użyj trzech części dla trzech przypadków: pozytywny; negatywny; zero
Inne aspekty przykładu:
Zero nie jest podpisane. Możesz wyświetlać go jako cokolwiek, na przykład „zero”.
Wartości bezwzględne mniejsze niż jeden mają wiodące 0 przed kropką dziesiętną. Dostosuj się do smaku.
Liczba cyfr odpowiada największej i najmniejszej bezwzględnej wartości dziesiętnej. Dostosuj się do smaku.
Znak dziesiętny jest zależny od kultury. .NET zastępuje.
Separatory grupowania są opcjonalne. Postać jest specyficzna dla kultury. .NET zastępuje. (Pozycje są również specyficzne dla kultury, ale jest kontrolowane tylko przez ciąg formatu.) Możesz również użyć dowolnego innego znaku oprócz znaków specjalnych dla Format (które obejmują. # 0).
źródło
Nie mogę komentować, więc odpowiem tutaj (system reputacji orzechów ....)
Możesz bardzo dobrze użyć number.ToString ("+ 0; - #"), aby utworzyć format czasu UTC String
Tutaj pokazano w kodzie PowerShell
Dziękuję @gcores https://stackoverflow.com/users/40256/gcores
źródło