2014-11-21 3 views
-1

Если у меня есть номер, как я могу определить количество десятичных знаков?Как определить число десятичных знаков в двойном?

например. для 0.0001 Я хочу, чтобы получить результат 4

Дубликата предложенного выше, менее подходящие, чем этот, потому что они принимают о культурно-независимом коде, но этот вопрос только о десятичном ориентированном коде (т.е. после запятой). Поэтому нет необходимости не вводить больше накладные расходы:

Finding the number of places after the decimal point of a Double

но они оба хорошие темы.

+0

Возможный дубликат: http://stackoverflow.com/questions/9386672/finding-the-number-of-places-after-the- decimal-point-of-a-double – Jite

+0

вот как вы это делаете http://stackoverflow.com/questions/13477689/find-number-of-decimal-places-in-decimal-value-regardless-of-culture – Vajura

+0

I что этого будет достаточно: Math.Abs ​​(Math.Floor (Math.Log10 (d))) –

ответ

2

Вы действительно не можете. A double - это тип данных с плавающей точкой, поэтому он никогда не бывает точным.

Вы могли взломать что-то вокруг, используя ToString:

double d = 0.994562d; 

int numberOfDecimals = d.ToString(CultureInfo.InvariantCulture).Length 
         - d.ToString(CultureInfo.InvariantCulture).IndexOf('.') 
         - 1 
         ; 
+2

ToString зависит от культуры. Таким образом, ваш хак не будет работать с американской культурой. Лучше использовать 'ToString (CultureInfo.InvariantCulture)' и '.' как десятичную метку. – dusky

+0

@ dusky: Вы правы. Ред. –

Смежные вопросы