2010-08-24 2 views
3

У меня возникла проблема с ценой. Мне нужно форматировать ввод цены типа XXXX.YY проблема в том, что входная цена может иметь форму XXX, YY в европе или XX, XXX.YY, если говорить о больших числах.Как конвертировать цену в формате

Есть ли там JS или C# lib, который помогает?

благодаря

ответ

1

для формата американского/британского:

Double.Parse("123,456.78", new CultureInfo("en-US")); 

для Немецкий Формат:

Double.Parse("123.456,78", new CultureInfo("de-DE")); 

Подсказка: Если вы храните/чтение данных из файла/базы данных и т.д., это, как правило, целесообразно использовать CultureInfo.InvariantCulture

+0

Если вы храните его в базе данных, отправьте дату в качестве значения DateTime в параметре. –

+1

@Cylon Cat: Это около двухместных, а не дат – yas4891

2

Вы должны использовать Decimal.Parse, а не Double.Parse при работе со значениями валюты. (Десятичного типа уменьшает вероятность ошибок округления и т.д.)

Чтобы ответить на ваш вопрос о различной культурной валюты форматирования, от MDSN:

Параметр s анализируется с помощью форматирования информации через NumberFormatInfo инициализированными для текущей культуры системы . Для получения дополнительной информации см. CurrentInfo. Чтобы разобрать строки, используя информацию о какой-либо другой культуре форматирования , используйте в Decimal.Parse (String, IFormatProvider) или метод Decimal.Parse (String, NumberStyles, IFormatProvider).

В случае, если вы не знаете, платформа .NET автоматически принимает «текущую культуру системы» из текущих региональных настроек операционной системы. В Windows это можно просмотреть/изменить пользователем компьютера в «Региональных настройках» или аналогичных.

+0

Хороший намек. Не знал, что – yas4891

+0

мой первый комментарий был о том, что Decimal.Parse делает раунд вместо усечения – yas4891

Смежные вопросы