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

  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011