2010-07-02 28 views
6

C# kullanıyorum, her 3 ondalık basamak eklediğimde, sayı yuvarlanır örn. örneğin olduğu gibi 1.54Yuvarlama Ondalıklarını Nasıl Önleyebilirim?

için

1.538

mermi

I sayı istiyorum 1.53 (yalnızca yuvarlak olmayan iki ondalık basamak).

Nasıl yapabilirim?

+6

Daha bilgiler olmadan soruya cevap vermek zor. Ondalık yerleri nereye yerleştiriyorsunuz ve nasıl yazdırıyorsunuz? Büyük olasılıkla, sayı doğru şekilde saklanır, ancak yazdırdığınız şekilde sadece 2 ondalık basamak gösterilir. – casablanca

+2

Math.Truncate() burada size yardımcı olabilir, ancak daha fazla bilgiye ihtiyacımız var. – CrimsonX

+2

Bu, listelenen sonuçları üreten kod snippet'i gibi daha fazla bilgiye gereksinim duyar. –

cevap

6

Sana Math.Truncate()

float number = 1.538 
number = Math.Truncate(number * 100)/100; 

Truncate sonu biraz çökertelim edecek kullanmak istiyor inanıyoruz. Ancak, negatif sayılara dikkat etmeyi unutmayın.

Her zaman 0'a doğru yuvarlamak isteyip istemediğinize ya da sonuna kadar soldurmak istediğinize bağlı olarak, Math.Floor her zaman negatif sonsuzluğa doğru yuvarlanır. Burada ikisi arasında a post on the difference var.

3

Math.Round() gibi istediğiniz ondalık sayıları belirtmenize izin vermek için iyi bir kod parçacığı veren this bağlantı sağlar.

Temelde o da şu: -

public static double Floor(this double d, int decimals) { 
    return Math.Floor(d * Math.Pow(10, decimals))/Math.Pow(10, decimals); 
}