C# 将带有点和逗号的数字转换为双精度将失败

C# 将带有点和逗号的数字转换为双精度将失败,c#,parsing,decimal,C#,Parsing,Decimal,有一个看起来像“1.900,00”的字符串。如何将此字符串格式化为1900的小数点 使用: decimal.TryParse("1.900,00", out var vkp) 会给我一个错误的结果。我该怎么办 这里有一个在线C#编译器的URL:试试这个: string s = "1.900,00"; s = s.Substring(0, s.LastIndexOf(",")).Replace(".", "") + "." + s.Substring(s.Last

有一个看起来像“1.900,00”的字符串。如何将此字符串格式化为1900的小数点

使用:

decimal.TryParse("1.900,00", out var vkp)
会给我一个错误的结果。我该怎么办

这里有一个在线C#编译器的URL:

试试这个:

        string s = "1.900,00";
        s = s.Substring(0, s.LastIndexOf(",")).Replace(".", "") + "." + s.Substring(s.LastIndexOf(",") + 1);
        decimal vkp = 0;
        decimal.TryParse(s, out vkp);
试试这个:

        string s = "1.900,00";
        s = s.Substring(0, s.LastIndexOf(",")).Replace(".", "") + "." + s.Substring(s.LastIndexOf(",") + 1);
        decimal vkp = 0;
        decimal.TryParse(s, out vkp);

我想你可以尝试以下方法:

string number = "1.900,00";
decimal.TryParse(number.Split(",")[0].Replace(".",""), out var vkp);
如果需要更简单的检查,可以尝试创建一个函数来检查字符串是否包含“,”字符

public static bool ToDouble(string s, out double d)
{
   if (s.Contains(","))
      return double.TryParse(s.Split(",")[0].Replace(".", ""), out d);

   return double.TryParse(s, out d);
}
您还可以通过以下方式获取本地化设置的小数点分隔符:

string dsep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator

我想你可以尝试以下方法:

string number = "1.900,00";
decimal.TryParse(number.Split(",")[0].Replace(".",""), out var vkp);
如果需要更简单的检查,可以尝试创建一个函数来检查字符串是否包含“,”字符

public static bool ToDouble(string s, out double d)
{
   if (s.Contains(","))
      return double.TryParse(s.Split(",")[0].Replace(".", ""), out d);

   return double.TryParse(s, out d);
}
您还可以通过以下方式获取本地化设置的小数点分隔符:

string dsep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator

您可以尝试使用
CultureInfo
,它使用
'.
作为千位分隔符,使用
'.
作为十进制分隔符(例如
“de de”
)。以及相应的
numberstyle

string input = "1.900,00";
decimal.TryParse(input, 
    NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint, 
    CultureInfo.GetCultureInfo("de-DE"), out var output);

您甚至可以创建自己的实例,在其中可以按自己喜欢的方式指定
NumberDecimalSeparator
NumberGroupSeparator

您可以尝试使用
CultureInfo
,它使用
'.
作为千位分隔符,使用
'.
作为十进制分隔符(例如
“de de”
)。以及相应的
numberstyle

string input = "1.900,00";
decimal.TryParse(input, 
    NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint, 
    CultureInfo.GetCultureInfo("de-DE"), out var output);
您甚至可以创建自己的实例,在其中可以按自己喜欢的方式指定
NumberDecimalSeparator
NumberGroupSeparator


NumberStyles.AllowThousands
@CodeCaster我尝试过:decimal.TryParse(“1.900,00”,NumberStyles.AllowThousands,CultureInfo.InvariantCulture,out value1);不起作用。不变区域性使用
作为千位分隔符,使用
作为整数和小数部分之间的分隔符。
NumberStyles.allowthusands
@CodeCaster我尝试过:decimal.TryParse(“1.900,00”,NumberStyles.allowthusands,CultureInfo.InvariantCulture,out value1);不起作用。不变区域性使用
作为千位分隔符,
作为整数和小数部分之间的分隔符。