Вычислить количество десятичных знаков строкового значения в C#

У меня есть программа на C#, которая выводит значения различных полей. В зависимости от поля десятичная точность составляет 2, 4 или 5 знаков после запятой. Как это проверить?

Я думаю, мне нужно создать какой-то метод, который принимает значение поля и вычисляет количество десятичных знаков, которые оно содержит. Мое утверждение может выглядеть примерно так:

      MyField.NumberOfDecimalPlaces.Should().Be(2)

Как мне посчитать количество десятичных знаков?

3 ответа

Вы можете использовать этот код:

       int GetScale(decimal d)
    {
        var number = d.Normalize();

        System.Data.SqlTypes.SqlDecimal x;
        x = new System.Data.SqlTypes.SqlDecimal(number);

        var scale = x.Scale;
        return scale;
    }



static decimal Normalize(this decimal value)
    {
        return value / 1.000000000000000000000000000000000m;
    }

Использование Linq

      var number = 4.6598958;
var dp = number.ToString().Split(".").LastOrDefault().Length;

Console.WriteLine(dp);

//outputs 7

Если это double тогда это может быть немного сложнее, чем вы ожидаете, из-за того, как числа хранятся в памяти.

Посмотрите этот ответ:

Нахождение количества знаков после запятой в Double

Если это строка, это может быть что-то вроде

var precision = myValue.Split('.')[1].Count()

Другие вопросы по тегам