2009-10-05 12 views
12

C# ile en yakın ondalık konuma nasıl dönüleceğini anlamaya çalışıyorum. Örneğin, tür çiftli bir değere sahibim. Bu çifte şu anda 10.75 olarak ayarlanmıştır. Bununla birlikte, herşeyi yuvarlamak ve ondalık konumunu aşmak zorundayım. Bu durumda, 10.8'lik bir değer arıyorum. C# içindeki ondaların konumuna nasıl geçebilirim?C# - Math.Round

Teşekkür ederiz!

+2

Açıkçası math.round hakkında bildiğinizden, bir şekilde sizin için çalışmıyor gibi geliyor. Ne denediğini gösterebilir ve beklediğin şeyden nasıl farklı olduğunu açıklayabilir misin? –

cevap

28
Math.Round(yourNumber, 1) 

İkinci parametre, yuvarlanacak ondalık basamak sayısıdır. Sizin durumunuzda, sonuç olarak 1 ondalık basamak istiyorum.

13

decimals parametresini alan overload of Math.Round'u kullanmanız yeterlidir. Sadece karşılaştırma için

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

:

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

Gerçekten yuvarlak gerekir, yoksa sadece baskı için biçimlendirmek ama değişken kendisi hassas olmalarını sağlar mı? gibi bir şey:

Eğer başlığında Math.Round() Kullanılan yana
decimal value = 10.75; 
value.ToString ("#.#"); 
5

, ben kabul edeceğim zaten temel Math.Round(10.75,1) yaklaşım denedim ve beklediğiniz bir şeyi döndürür. Bunu göz önünde bulundurarak, ben özellikle fonksiyon için farklı aşırı bazılarına bir MidPointRounding enum kabul eden bir seyir öneriyorum:

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

2

sadece ilk ondalık sonra her şeyi "cut" istiyorsanız, bu shoudl work:

return Math.Round(value * 10)/10