字符串加倍数.(格式为##.###,##)

Vov*_*pov 1 .net c# string double

我需要知道是否有办法string用非普通格式解析a double,例如:

string str = "1.500,43";
Run Code Online (Sandbox Code Playgroud)

double num = 1500.43;
Run Code Online (Sandbox Code Playgroud)

我的尝试没有用.我得到了0:

double number=0;
double.TryParse("1.500,43", out number);
Run Code Online (Sandbox Code Playgroud)

我知道我可以删除"." 和更改",",以"."比做TryParse,但我想另谋出路.

有谁知道如何做到这一点?

Son*_*nül 5

如果你不使用任何IFormatProvider与您的double.TryParse方法,它使用的CurrentCulture默认.

可能你CurrentcCultureNumberDecimalSeparator或/和NumberGroupSeparator属性与,和不匹配..

作为一个解决方案,您可以.CloneCurrentCulture和设置这些属性喜欢;

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NumberDecimalSeparator = ",";
culture.NumberFormat.NumberGroupSeparator = ".";
double number;
if(double.TryParse("1.500,43", NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
                   culture, out number))
{
    // Successful parsing
}
Run Code Online (Sandbox Code Playgroud)

通常,替换你的.,字符串方法不是一个好主意.