Bunun için yerleşik bir şey olduğuna inanmıyorum, çünkü bu oldukça sıra dışı bir gereksinimdir (örneğin 1.3358'nin 1.33'e 1.33'ten daha yakın olduğu fikri tekildir). Kodunuz makul olarak uygun görünüyor.
DÜZENLEME: Eğer yuvarlama başlar noktadır orta noktası olmadığından, buradan istediğiniz etkiyi elde etmek MidpointRounding
kullanamazsınız - bu 1,336 yerine normal 1.335 den (diyelim) var. Sadece 1.335, 1.33 ve 1.34 arasında orta nokta olarak kabul edilir, çünkü , orta nokta olan'dur. Olağandışı bir şekilde burada yanlı bir şekilde yuvarlanmış bir yeriniz var.
Üç DP'ye kesebiliyorsunuz ve MidpointRounding
numaralı telefonu kullanamıyorsunuz, çünkü "sıfır doğru" modu yok.
biri biraz garip seçenek etkin bir önyargı kendiniz gerçekleştirmek olacaktır:
private static decimal CustomRound(decimal x)
{
return decimal.Round(x - 0.001m, 2, MidpointRounding.AwayFromZero);
}
yüzden 82.3647 olarak gördüğünü ve yuvarlak 82.36 ile 82.3657 davranacağını; 82.3667 ve 82.3657'yi tedavi eder ve 82.37'ye yuvarlar ve 82.5967'yi 82.5957 olarak tedavi eder ve 82.60'a yuvarlar. I 'u ne yaparsa yapar - ama sadece pozitif değerler için. Olumsuz değerler için tam olarak hangi davranışı istediğinizi öğrenmelisiniz.
Ne yaparsanız yapın, siz çok net belgelemek gerekir :)
Sadece tercih meselesi olarak, sadece her şey gerçekten ondalık ile yapıldığını daha anlaşılabilir olması için, Math.Truncate
yerine decimal.Truncate
kullanmak.
@Downvoter: Yorum yapmak ister misiniz? –
Evet, yerleşik yöntemleri kullanmaya çalışmakla uğraştım. Teşekkürler. – redzon