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
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 string
tabanlı 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.
İki ondalık basamaklı bir sayı yazın S...
jQuery: kısıtlamak " için en iyi y...
10 altında int değeri string iki basam...
Nasıl C iki ondalık sayı yuvarlak yapm...
Javascript: N ondalık yuvarlak bir say...