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

Convert number into culture specific

我有一个像 202667.4 这样的号码。我想根据文化 .

将其转换为数字

例如:

In "de"(German) the number should be in 202.667,40.

任何帮助将不胜感激。

谢谢。

您可以在将数字解析为德语格式时使用文化信息

试试这个方法:

string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:000,000.00}", <your number>)

例如:

 string result = string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:000,000.00}", 202667.4)

如果您想以文化特定格式表示现有数字(例如,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);

结果

202.667,40

如果你得到一个 string 并且你想要一个数字,请输入 Parse (TryParse):

string data = "202.667,40";

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

Console.WriteLine(data.ToString(CultureInfo.InvariantCulture));

如果您不想在每次使用格式设置时都指定文化,您可以将文化设置为 current 一个:

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

...

double source = 202667.4;

Console.WriteLine($"{source:n}");

您可以使用此代码将变量转换为不同的区域性:

int MyInt = 100;
string MyString = MyInt.ToString("C",CultureInfo.GetCultureInfo("de-DE"));
MessageBox.Show(MyString);

如果你想用德语格式构建所有程序,你可以在你的主程序中使用此代码 class:

using System.Globalization;`

Application.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");`
 System.Globalization.CultureInfo EnglishCulture = new 
System.Globalization.CultureInfo("en-EN");
System.Globalization.CultureInfo GermanCulture = new 
System.Globalization.CultureInfo("de-de");

必要改造,

double val;
if(double.TryParse("65,89875", System.Globalization.NumberStyles.Float, 
GermanCulture,  out val))
{
string valInGermanFormat = val.ToString(GermanCulture);
string valInEnglishFormat = val.ToString(EnglishCulture);
 }

if(double.TryParse("65.89875", System.Globalization.NumberStyles.Float, 
EnglishCulture,  out val))
{
string valInGermanFormat = val.ToString(GermanCulture);
string valInEnglishFormat = val.ToString(EnglishCulture);
 }