Jak sformatować a Double
do a String
w C #, aby mieć tylko dwa miejsca po przecinku?
Jeśli użyję String.Format("{0:0.00}%", myDoubleValue)
liczby, jest ona zaokrąglana i chcę prostego obcięcia bez zaokrąglania. Chcę również, aby konwersja String
była wrażliwa na kulturę.
Odpowiedzi:
Używam następujących:
Na przykład:
Jeśli numer to 50.947563 i użyjesz tego, wydarzy się co następuje:
Twoja odpowiedź została obcięta, teraz, aby sformatować ciąg, wykonaj następujące czynności:
źródło
string.Format
kroku, który formatuje ciąg. Zobacz moją odpowiedź poniżej.Następujące zaokrągla liczby, ale pokazuje tylko do 2 miejsc po przecinku (usuwając wszelkie końcowe zera), dzięki
.##
.http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
źródło
Proponuję najpierw obciąć, a następnie sformatować:
Użyj stałej 100 dla obcinania 2 cyfr; użyj 1, po którym następuje tyle zer, ile cyfr po przecinku chcesz. Użyj nazwy kultury, której potrzebujesz, aby dostosować wynik formatowania.
źródło
new CultureInfo("de-DE")
powinieneś użyć właściwości statycznejCulture.InvariantCulture
Najprostsza metoda, użyj ciągów formatu liczbowego:
źródło
używam
price.ToString("0.00")
do uzyskania wiodących zerźródło
Funkcja C # wyrażona przez Kyle'a Rozendo:
źródło
Co powiesz na dodanie jednego dodatkowego miejsca po przecinku, który ma zostać zaokrąglony, a następnie odrzucony:
źródło
To działa dla mnie
źródło
Wiem, że to stary wątek, ale po prostu musiałem to zrobić. Podczas gdy inne podejścia tutaj działają, chciałem mieć łatwy sposób wpływania na wiele połączeń do
string.format
. Więc dodanieMath.Truncate
do wszystkich wywołań nie było dobrym rozwiązaniem. Ponadto, ponieważ część formatowania jest przechowywana w bazie danych, pogorszyło to jeszcze bardziej.Dlatego stworzyłem niestandardowego dostawcę formatu, który pozwoliłby mi dodać obcinanie do ciągu formatującego, np .:
Implementacja jest dość prosta i można ją łatwo rozszerzyć na inne wymagania.
źródło
Miałem ten problem z Xamarin Forms i rozwiązałem go w ten sposób:
źródło
Do pokazania waluty możesz użyć
"C"
:Wynik:
$1.99
źródło
Możesz także napisać własny IFormatProvider , chociaż przypuszczam, że w końcu będziesz musiał pomyśleć o sposobie wykonania faktycznego obcięcia.
Przynajmniej byłby łatwy do ponownego użycia.
W CodeProject znajduje się artykuł o tym, jak zaimplementować własny IFormatProvider / ICustomFormatter . W takim przypadku najlepszym rozwiązaniem może być „rozszerzenie” istniejącego formatu liczbowego. Nie wygląda to zbyt mocno.
źródło
Następujące mogą być używane tylko do wyświetlania, które używają właściwości String ..
źródło
Rozwiązanie:
źródło
Zwróć także uwagę na CultureInformation swojego systemu. Tutaj moje rozwiązanie bez zaokrąglania.
W tym przykładzie wystarczy zdefiniować zmienną MyValue jako double. W rezultacie otrzymasz sformatowaną wartość w zmiennej łańcuchowej NewValue .
Uwaga - ustaw również instrukcję C # using:
źródło