我需要将一个字符串转换成十进制数(decimal)在C#中,但这个字符串有不同的格式。
例如:
"50085"
"500,85"
"500.85"
应该将其转换为十进制数500.85。是否有一种简化的方法可以使用格式进行此转换?
一些文化习惯使用逗号来表示浮点数。您可以在aspx页面上使用以下代码进行测试:
var x = decimal.Parse("500,85");
Response.Write(x + (decimal)0.15);
当线程文化设置为使用逗号作为浮点数时,此代码将返回501。您可以通过以下方式强制完成:
var x = decimal.Parse("500,85", new NumberFormatInfo() { NumberDecimalSeparator = "," });
虽然decimal.Parse()是你要找的方法,但你需要向它提供更多信息。它不会自动在你提供的三种格式中选择,你需要告诉它你期望的格式(以IFormatProvider的形式)。即使使用IFormatProvider,我认为“50085”也不会被正确地解析。
我看到唯一一致的事情是,从你的示例中似乎总是期望精确到两位小数。如果是这样的话,你可以删除所有的句号和逗号,然后除以100。
或许可以尝试这样做:
public decimal? CustomParse(string incomingValue)
{
decimal val;
if (!decimal.TryParse(incomingValue.Replace(",", "").Replace(".", ""), NumberStyles.Number, CultureInfo.InvariantCulture, out val))
return null;
return val / 100;
}
string s = "500.85";
decimal d = decimal.Parse(s);
s = s.Replace(',','.');
但需要检查多个.
...这似乎更多地涉及输入净化的问题。如果您能够验证和净化输入以符合一组规则,则转换为十进制将变得更加容易。
50.865,85
这样的输入。 - V4Vendetta尝试下面的代码:
string numValue = "500,85";
System.Globalization.CultureInfo culInfo = new System.Globalization.CultureInfo("fr-FR");
decimal decValue;
bool decValid = decimal.TryParse(numValue, System.Globalization.NumberStyles.Number, culInfo.NumberFormat, out decValue);
if (decValid)
{
lblDecNum.Text = Convert.ToString(decValue, culInfo.NumberFormat);
}
由于我输入了一个值为500.85,我将假设文化是法国,因此小数分隔符是 ",
"。然后使用 decimal.TryParse(numValue, System.Globalization.NumberStyles.Number, culInfo.NumberFormat,out decValue); 将返回 decValue 值为 500.85。同样,如果用户是美国英语,则更改 culInfo 构造函数。
有很多方法:
System.Convert.ToDecimal("232.23")
Double.Parse("232.23")
double test;
Double.TryParse("232.23", out test)
确保你使用 try 和 catch...
这是一个名为数字分组符号的新功能。
操作步骤:
例子:
string checkFormate = "123e123";
decimal outPut = 0.0M;
decimal.TryParse(checkFormate, out outPut);
Ans: outPut=123123;
public decimal AutoParse(string value)
{
if (Convert.ToDecimal("3.3") == ((decimal)3.3))
{
return Convert.ToDecimal(value.Replace(",", "."));
}
else
{
return Convert.ToDecimal(value.Replace(".", ","));
}
}
500,85
可能等同于500.85
。 - Cody Gray50,865.85
吗? - V4Vendetta