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

  • Pocketnow

    Pocketnow

    14 EKİM 2007
  • Techmoan

    Techmoan

    31 Mayıs 2009
  • warningthepeople

    warningthepe

    21 EYLÜL 2011