Что было бы хорошим способом определения количества десятичных знаков из строки формата? - PullRequest
1 голос
/ 03 ноября 2010

Мне бы хотелось, чтобы функция выглядела следующим образом:

int GetDecimalPlaces(string format, IFormatProvider formatProvider = null);

Входные данные будут точно такими же, как те, которые могут быть законно переданы методам, отвечающим за форматирование чисел, например, double.ToString, decimal.ToString.

Вывод будет int, указывающим наименьшее количество десятичных разрядов, требуемое для строки формата.

Итак, вот несколько примеров входов / выходов, которые я ожидаю (скажем, если оставить formatProvider, так как null приведет к использованию текущей культуры):

Input | Output
------|-------
N2    | 2
0     | 0
0.000 | 3
g     | 0
0.0## | 1

Если возможно, я бы хотел сделать это «правильным» способом; т.е. без хаков. Но если взломать я должен, я был бы также признателен за хорошие предложения по взлому;)

Ответы [ 2 ]

1 голос
/ 03 ноября 2010

Вероятно, самым простым способом было бы взять целое число, например 1, и отформатировать его, а затем проанализировать строку, чтобы подсчитать количество десятичных разрядов. Я полагаю, это можно считать хаком, но оно должно работать довольно надежно.

0 голосов
/ 23 августа 2012

Почему бы не преобразовать в строку, а затем найти местоположение символа разделителя.вычтите это значение из длины строки.Опять возможный взлом, но ???

...