我有一个数字,比如 202667.4
。我想将它转换成一个根据文化背景的数字。
例如:
在 "de"(德语)中,这个数字应该是 202.667,40。
非常感谢您的帮助。
谢谢。
我有一个数字,比如 202667.4
。我想将它转换成一个根据文化背景的数字。
例如:
在 "de"(德语)中,这个数字应该是 202.667,40。
非常感谢您的帮助。
谢谢。
如果您想以特定于文化的格式表示现有数字(比如double
),请尝试格式化:
https://learn.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
如果你有一个字符串并且想要一个数字,使用 Parse
(TryParse
):
string data = "202.667,40";
double result = double.Parse(data, CultureInfo.GetCultureInfo("de"));
Console.WriteLine(data.ToString(CultureInfo.InvariantCulture));
如果您不想每次使用格式设置时都指定文化,可以将文化设置为当前的文化:
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("de");
...
double source = 202667.4;
Console.WriteLine($"{source:n}");
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
没有格式。格式化是在解释字符串进行解析时发挥作用的,但它看起来已经正确地解析了您的数字字符串,并且在格式化字符串时扮演重要角色,而您在评论中没有这样做。 - Lasse V. Karlsenint MyInt = 100;
string MyString = MyInt.ToString("C",CultureInfo.GetCultureInfo("de-DE"));
MessageBox.Show(MyString);
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);
}