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...
JavaScript: sayı biçimlendirme tam ola...
# - c Nasıl 2 ondalık basamak (bir say...
jQuery: kısıtlamak " için en iyi y...
Ne kadar büyük bir MySQL veritabanı dü...