C# 将带有点和逗号的数字转换为双精度将失败
有一个看起来像“1.900,00”的字符串。如何将此字符串格式化为1900的小数点 使用: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
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);不起作用。不变区域性使用,
作为千位分隔符,
作为整数和小数部分之间的分隔符。