Вычислить количество десятичных знаков строкового значения в 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()