Obecnie buduję moduł sprzedaży dla witryny klienta. Do tej pory mam cenę do obliczenia idealnie, ale utknąłem w formatowaniu wyniku do 2 miejsc po przecinku.
Obecnie wywołuję to w zmiennej, dzięki czemu mogę powiązać wyniki z widokiem listy.
Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),
Czy ktoś może mi pokazać, jak sformatować wynik do 2 miejsc po przecinku? Wielkie dzięki!
c#
variables
floating-point
decimal
Callum
źródło
źródło
Odpowiedzi:
Możesz przekazać format do
ToString
metody, np .:Standardowe ciągi formatu liczb
źródło
Pierwszą rzeczą, którą musisz zrobić, to użyć tego
decimal
typu zamiastfloat
cen. Używaniefloat
jest absolutnie niedopuszczalne, ponieważ nie może dokładnie reprezentować większości ułamków dziesiętnych.Po wykonaniu tej czynności
Decimal.Round()
można użyć do zaokrąglenia do 2 miejsc.źródło
String.Format("{0:#,###.##}", value)
Bardziej złożony przykład z formatowania ciągów w C # :
źródło
Wierzę:
Powinien to zrobić.
Zobacz przykłady formatu ciągu linków C #
źródło
źródło
Jak już wspomniano, będziesz musiał użyć sformatowanego wyniku; które jest wykonywane przez
Write()
,WriteLine()
,Format()
iToString()
metod.To, co nie zostało wspomniane, to format stałoprzecinkowy, który dopuszcza określoną liczbę miejsc dziesiętnych. Używa „F”, a liczba po „F” jest liczbą wyrzuconych miejsc dziesiętnych, jak pokazano w przykładach.
źródło
Dotyczy to przypadków, w których chcesz użyć interpolowanych ciągów . Publikuję to, ponieważ mam dość prób i błędów i ostatecznie przewijam mnóstwo dokumentów za każdym razem, gdy muszę sformatować jakiś skalar.
Ostrzeżenie o wydajności
Interpolowane ciągi są powolne. Z mojego doświadczenia wynika, że jest to kolejność (od szybkiego do wolnego):
value.ToString(format)+" blah blah"
string.Format("{0:format} blah blah", value)
$"{value:format} blah blah"
źródło