.Net Преобразование числа из одной культуры в другую - PullRequest
4 голосов
/ 31 октября 2008

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

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

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

Ответы [ 3 ]

6 голосов
/ 31 октября 2008

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

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

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

3 голосов
/ 31 октября 2008

Оставьте это как число. Измените CultureInfo потока, и он будет отображаться соответственно без необходимости преобразования.

* 1003 Е.Г. *

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

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

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

0 голосов
/ 31 октября 2008

Вы можете использовать NumberFormatInfo класс, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...