Преобразование строки с валютой в число

подскажите как можно сделать код лучше? А именно мне не нравится вот этот кусок кода:

double balanceConvert = double.Parse(balanse.Replace("₽", "").Replace(".", ",").Trim());

Вот основной код:

//Получаю данные в таком формате
string balanse = "5000.00 ₽";

//Основной баланс
int baseBalance = 10000;


//конвертирую баланс, для дальнейшего сравнения
double balanceConvert = double.Parse(balanse.Replace("₽", "").Replace(".", ",").Trim());


if (baseBalance > balanceConvert)
{
    Console.WriteLine($"[{balanceConvert}] - все норм");
}
else Console.WriteLine($"[{balanceConvert}] - необходимо пополнить баланс");

Ответы (2 шт):

Автор решения: Чирков Илья

Возможно так:

string balance = "5000.00 ₽";
double balanceConvert = double.Parse(Regex.Replace(balance, "[ ₽]", ""), CultureInfo.InvariantCulture)
→ Ссылка
Автор решения: Alexey Kurtov

Необходимо использовать NumberFormatInfo, в этом случае ваш код будет удобным для чтения, плюс закроет многие проблемы с валидацией входящих данных, так же рекомендую для манипуляций с деньгами использовать тип данных decimal. Тип double не подходит из-за его неточности.

Пример:

    var balanceString = "5000.00 ₽";
    var format = new NumberFormatInfo
    {
        CurrencySymbol = "₽",
        CurrencyDecimalDigits = 2,
        CurrencyDecimalSeparator = ".",
        NumberDecimalSeparator = ".",
        CurrencyGroupSeparator = " ",
        NumberGroupSeparator = " "
    };
    var balance = decimal.Parse(balanceString, NumberStyles.Currency, format);

Переменную format лучше вынести в приватный, статический член типа.

→ Ссылка