2009-10-05 11 views
12

Próbuję zrozumieć, jak zaokrąglić do najbliższej dziesiątej pozycji za pomocą C#. Na przykład mam wartość, która jest typu double. To podwójne jest obecnie ustawione na 10,75. Jednak muszę zaokrąglić, a następnie skrócić wszystko za dziesiątą pozycję. W tym przypadku szukam wartości 10,8. Jak zaokrąglam do dziesiątej pozycji w C#?C# - Math.Round

Dziękujemy!

+2

Ponieważ oczywiście wiesz o math.round, to brzmi jak to jakoś nie działa dla ciebie. Czy możesz pokazać, co wypróbowałeś i wyjaśnić, jak to się różni od tego, czego się spodziewałeś? –

Odpowiedz

28
Math.Round(yourNumber, 1) 

Drugim parametrem jest liczba miejsc dziesiętnych do zaokrąglenia do. W twoim przypadku potrzebujesz 1 miejsca po przecinku jako wyniku końcowego.

13

Po prostu trzeba użyć parametru overload of Math.Round, który pobiera parametr decimals.

Math.Round(10.75, 1) // returns 10.8 

Dla porównania:

Math.Round(10.75) // returns 11 
Math.Round(10.75, 0) // returns 11 
Math.Round(10.75, 2) // returns 10.75 
4

Czy naprawdę trzeba go zaokrąglić, albo po prostu sformatować go do druku, ale pozwalają sama zmienna trzymać swoją precyzję? Coś jak:

decimal value = 10.75; 
value.ToString ("#.#"); 
5

Ponieważ Używane Math.Round() w tytule, mam zamiar założyć już próbowałeś podstawową Math.Round(10.75,1) podejście i zwraca coś, czego nie spodziewać. Mając to na uwadze, proponuję patrząc na niektóre z różnych przeciążeń dla funkcji, zwłaszcza taki, który akceptuje MidPointRounding ENUM:

http://msdn.microsoft.com/en-us/library/f5898377.aspx

2

Jeśli chcesz po prostu „wyciąć” wszystko po pierwszym przecinku to, shoudl pracy:

return Math.Round(value * 10)/10