将数字转换为特定文化的格式

9

我有一个数字,比如 202667.4。我想将它转换成一个根据文化背景的数字。

例如:

在 "de"(德语)中,这个数字应该是 202.667,40

非常感谢您的帮助。

谢谢。

4个回答

11

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

谢谢 @Dmitry,它起作用了。但是,我想要输出一个数字而不是字符串。有什么办法可以做到这一点吗? - Manikandan Ram
@Manikandan Ram:数字始终不变,但其表示方式(作为字符串)可能会变化(即,我们希望用德国文化的分组和小数点分隔符来表示“202667.4”),这就是为什么我们要使用格式化的原因。 - Dmitry Bychenko

1
你可以在将数字解析为德语格式时使用Culture info。
尝试使用以下方法:
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)

我已经尝试过了,但是它没有起作用。System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("de");double num = Double.Parse("202667.4", culture);2026674.0我错过了什么吗? - Manikandan Ram
1
我不理解 @ManikandanRam 你的评论,double 没有格式。格式化是在解释字符串进行解析时发挥作用的,但它看起来已经正确地解析了您的数字字符串,并且在格式化字符串时扮演重要角色,而您在评论中没有这样做。 - Lasse V. Karlsen

0
您可以使用此代码将变量转换为不同的文化:
int MyInt = 100;
string MyString = MyInt.ToString("C",CultureInfo.GetCultureInfo("de-DE"));
MessageBox.Show(MyString);

如果您想使用德国格式构建所有程序,可以在主类中使用以下代码:
using System.Globalization;`

Application.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");`

0
 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);
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接