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...
'2 ondalık sayı biçimlendirme en ...
# - c Nasıl 2 ondalık basamak (bir say...
En iyi Yolu tam Sayı, Ondalık Sayı kıs...
Art arda beş basamaklı en büyük ürün 1...