Преобразуйте любую строку валюты для удвоения

Я должен сохранить несколько валют в SQL-сервере. Я понимаю, что SQL не будет поддерживать все различные типы валют (если я не сохраню его как строку, но я не хочу делать это).

Моя идея состояла в том, чтобы преобразовать все значения от их формата валюты до стандартного двухместного номера и хранилища это вместо этого. Затем просто переформатируйте на основе информации о культуре при отображении. Однако я попытался делать что-то как, например.

var cultureInfo = new System.Globalization.CultureInfo("en-US");
double plain = return Double.Parse("$20,000.00", cultureInfo);

Это, когда-либо кажется, не работает, это всегда бросает a FormatException. Даже удаляя обозначение денежной единицы и просто пытаясь сделать это на основе одного только числа делает то же самое. Это - просто пример, я хочу поддерживать в значительной степени любой тип валюты.

Существует ли стандартный способ снять валюту и получить значение как двойное?

40
задан James 2 May 2010 в 14:08
поделиться

2 ответа

Думаю, это должно сработать:

double.Parse(currencyValue, NumberStyles.Currency);

Здесь вы можете узнать больше о NumberStyles .

Изменить: в случае, если кто-то видит этот ответ, не глядя на другие ответы / комментарии, этот ответ отвечает на вопрос, как написано, но хранить валюту в виде двойного не очень хорошая идея, и было бы лучше использовать десятичное .

97
ответ дан 27 November 2019 в 01:09
поделиться

Вы должны передать NumberStyles функции Parse

Decimal.Parse("$20,000.00", NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, new CultureInfo("en-US"));

Еще несколько вещей, для валют я бы посоветовал вам использовать Decimal . И это может быть далеко, но может быть лучше сохранить данные о валюте как Деньги в БД и добавить код валюты для идентификации валюты стоимости.

Да, и ответы предполагают NumberStyles.Currency, что было бы лучше. Это значение pre-Or'd, если вы все еще думаете, что хотите использовать строки.

21
ответ дан 27 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: