2010-01-13 121 views
1

我想解析一个字符串为long值为1.0010412473392E + 15.但它给出了一个异常输入字符串没有在一个正确的格式。要做到这一点。解析一个字符串

这两个答案的工作方式是如何选择它们作为答案。

回答

3

时退房System.Globalization.NumberStyles枚举在Int64.Parse适当超载。如果指定System.Globalization.NumberStyles.Any,它应该工作:

long v = Int64.Parse(s, System.Globalization.NumberStyles.Any); 

但请注意,您在解析数已精度的限制,(只有13位小数,但被指定为E + 15)。此外,“任何”枚举可能超过您真正需要 - 在这种情况下,您只需要AllowDecimalPointAllowExponent

long v = Int64.Parse(s, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowExponent); 
1

您确定不想要解析double吗?

var myDouble = double.Parse(myString); 

然后您可以尝试转换为long

var myLong = Convert.ToInt64(myDouble);