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

  • gamingbits

    gamingbits

    2 Mayıs 2006
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • Videojug

    Videojug

    25 EKİM 2006