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

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • trickycharms

    trickycharms

    6 Aralık 2013