2008-10-31 1 views
4

В .Net (VB более конкретно, но это не имеет значения), есть ли способ изменить формат номера из одной культуры в другую строго через тип номера?.Net Преобразование числа из одной культуры в другую

Проблема заключается в следующем: на английском языке число, например, 123.45. Если в Швеции число будет 123,45

Есть ли способ конвертировать 123,45 в 123,45 без необходимости его преобразования в строку (а затем использовать методы форматирования), а затем преобразовать ее в правильный тип (один, двойной и т. д.)?

ответ

6

Это не будет случаем преобразования в строку, а затем назад к правильному типу - совсем наоборот.

У телефона нет информации о форматировании. Поплавок - это float, это float. Только когда вы анализируете или форматируете культуру, становится актуальной.

Если у вас уже есть значение поплавка, просто отформатируйте его соответствующим образом на основе культуры того, кто его читает.

3

Оставьте это как номер. Измените contentInfo в потоке, и оно отобразится соответственно без необходимости преобразования.

E.g.

Thread.CurrentThread.CurrentCulture = New CultureInfo("se-SE") 
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture 

Никогда не пробуйте и не форматируйте числа или даты в строках, или вы будете на пути в ад.

ОБНОВЛЕНИЕ: Джон замечает, что в комментариях вы будете знать, относится ли это к вашей ситуации или нет.

+0

Изменение CultureInfo в потоке звучит как более рискованный способ сделать это, чем явно форматирование с определенным CultureInfo, когда вы хотите отформатировать его. Конечно, если смысл всей темы изменить культуру, это нормально - но я бы не изменил культуру, формат, а потом изменил обратно – 2008-10-31 16:29:44