这是将字符串转换为带有两位小数的浮点数的正确方法吗?
string s1 = "9.09";
string s2= "99,09";
string s3= ",09";
ConvertToFloat(s1);
ConvertToFloat(s2);
ConvertToFloat(s3);
private float ConvertToFloat(string value)
{
float result;
decimal de= Convert.ToDecimal(value);
bool IsDecimalFormat = IsDecimal(de);
if (IsDecimalFormat)
{
result =Convert.ToSingle(value);
}
else
{
result = Convert.ToSingle(value)/100;
}
return result;
}
}
private bool IsDecimal(decimal myDec)
{
return (Decimal.Ceiling(myDec) > myDec) ? true : false;
}
答案 0 :(得分:2)
如果你想要小数位,正确的方法是返回decimal
。 float
没有小数位。
答案 1 :(得分:0)
这就是我编码ConvertToFloat
的方式:
private float ConvertToFloat(string value) {
if (!Validate(value))
throw new ArgumentException (value);
string[] v = value.Split(new char[] {'.', ','});
int integer = 0;
if (!string.IsNullOrEmpty(v[0])) {
integer = Convert.ToInt32(v[0]);
}
int dec = Convert.ToInt32(v[1]);
return integer + (dec / 100.0f);
}
修改强>
我添加了验证方法。
public static bool Validate(string a)
{
return Regex.IsMatch(a, @"^\d*[\.,]\d{2}$");
}
答案 2 :(得分:0)
约翰指出,如果你有“。”和“,”在您的示例数据中,您可以考虑将decimal.Parse(value, CultureInfo.xxx
与允许的文化一起使用。