将数字转换为特定于文化的

Man*_*Ram 5 c# culture localization cultureinfo number-formatting

我有一个像 202667.4. 我想根据文化将其转换为数字。

例如:

在“de”(德语)中,数字应为202.667,40

任何帮助将不胜感激。

谢谢。

Dmi*_*nko 8

如果要以double特定于文化的格式表示现有数字(例如),请尝试格式化

https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

double source = 202667.4;

// "n"  - ... group separators, and a decimal separator with optional negative sign  
// "de" - German culture
string result = source.ToString("n", CultureInfo.GetCultureInfo("de"));

Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

结果

202.667,40
Run Code Online (Sandbox Code Playgroud)

如果给定 astring并且想要一个数字,请输入Parse( TryParse):

string data = "202.667,40";

double result = double.Parse(data, CultureInfo.GetCultureInfo("de"));

Console.WriteLine(data.ToString(CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)

如果您不想在每次处理格式时都指定文化,您可以将文化设置为当前文化:

CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de");

...

double source = 202667.4;

Console.WriteLine($"{source:n}");
Run Code Online (Sandbox Code Playgroud)