Предположим, что у нас есть System.Decimal number.
Для иллюстрации возьмем тот, чье представление ToString() выглядит следующим образом:
d.ToString() = "123.4500"
В этом десятичном разряде можно сказать следующее. Для наших целей масштаб определяется как число цифр справа от десятичной точки. Эффективная шкала аналогична, но игнорирует любые конечные нули, которые встречаются в дробной части. (Другими словами, эти параметры определены как децималы SQL плюс некоторые дополнительные параметры для учета концепции System.Decimal конечных нулей в дробной части.)
- Точность: 7
- Масштаб: 4
- Эффективная точность: 5
- Эффективная шкала: 2
Для произвольной System.Decimal, как я могу вычислить все четыре из этих параметров эффективно и без преобразования в String и проверки строки? Решение, вероятно, требует Decimal.GetBits.
Еще несколько примеров:
Examples Precision Scale EffectivePrecision EffectiveScale
0 1 (?) 0 1 (?) 0
0.0 2 (?) 1 1 (?) 0
12.45 4 2 4 2
12.4500 6 4 4 2
770 3 0 3 0
(?) В качестве альтернативы интерпретация этих прецизионных значений как нуля будет хорошей.