我正在尝试将 _string [1]转换为double ,将 _string [2]转换为Int
此字符串数组是动态生成的。
字符串值可以为空或1.1或1或.1 我该怎么办呢。
我试着这样做。string locale;
locale = System.Web.HttpContext.Current.Request.UserLanguages[0];
CultureInfo culture;
culture = new CultureInfo(locale);
double cValue = Double.Parse(_string[1], culture.NumberFormat)
int sValue = Int32.Parse(_string[2], culture.NumberFormat)
当有空字符串或十进制字符串
时,有时会给我无效输入答案 0 :(得分:6)
您可以使用double.TryParse。
// There's no need to initialize cValue since it's used as an
// out parameter by TryParse which guarantees initialization.
// If TryParse fails the output parameter will be set it to
// default(T), where T is double in this case, i.e. 0.
double cValue;
if( Double.TryParse( line[8], out cValue ) )
{
// success (cValue is now the parsed value)
}
else
{
// failure (cValue is now 0)
}
或者如果您需要指定文化
if(double.TryParse(line[8], NumberStyles.Any, CultureInfo.CurrentCulture, out cValue))
{
}
如果你真的想要简洁,那么你可以简单地使用它:
double cValue;
Double.TryParse( line[8], out cValue );
以上额外的行只是为了演示。
答案 1 :(得分:5)
对于双倍,您可以使用像这样的三元运算符
double d = Double.TryParse(_string[1], out d) ? Convert.ToDouble(_string[1]) : 0;
为了确保安全,你可以使用try-catch或Double.TryParse方法,这是一个更好的选择。
如果要显示此项,您将获得0作为输出。您可以使用以下行将其转换为0.00
string output = (String.Format("{0:0.00}", cValue));
答案 2 :(得分:0)
试试这个......
double cValue = 0.0;
int sValue = 0;
if(!String.IsNullOrEmpty(_string[1]))
{
cValue = Convert.ToDouble(_string[1]);
}
if (!String.IsNullOrEmpty(_string[2]))
{
sValue = Convert.ToInt32(_string[2]);
}
http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx
如果您的字符串为null或为空,则不会尝试转换它。它只是0.0或0。