SORU
4 ŞUBAT 2014, Salı


Ondalık noktasından önce basamaklı sayı elde

decimal türünde bir değişken var ve ondalık noktasından önce basamak sayısını kontrol etmek istiyorum. Ne yapmalıyım? Örneğin, 467.45 3 dönmelidir.

CEVAP
4 ŞUBAT 2014, Salı


string dönüştürmeden çözüm egzotik kültürlerin durumda tehlikeli olabilir):

static int GetNumberOfDigits(decimal d)
{
    decimal abs = Math.Abs(d);

    return abs < 1 ? 0 : (int)(Math.Log10(decimal.ToDouble(abs))   1);
}

Bu çözüm, tüm ondalık değerleri için geçerli olduğunu unutmayın

GÜNCELLEME

Aslında bu çözüm, örneğin bazı büyük değerler ile çalışmaz: 999999999999998, 999999999999999, 9999999999999939...

Belli ki, double ile matematiksel işlemleri bu görev için yeterince doğru değil.

Yanlış değerler ararken stringtabanlı alternatifleri bu konuda önerilen kullanma eğilimindedir. Bana gelince, daha güvenilir ve kullanımı kolay (ama kültürler haberdar olmak) olduğunu kanıtlar. Loop-tabanlı çözümler daha hızlı olabilir.

Bana yorumcu, utanç, ders için teşekkürler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fouseyTUBE

    fouseyTUBE

    21 Mart 2011
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010
  • tunez4you

    tunez4you

    20 EKİM 2008