我想解析一个字符串为long值为1.0010412473392E + 15.但它给出了一个异常输入字符串没有在一个正确的格式。要做到这一点。解析一个字符串
这两个答案的工作方式是如何选择它们作为答案。
我想解析一个字符串为long值为1.0010412473392E + 15.但它给出了一个异常输入字符串没有在一个正确的格式。要做到这一点。解析一个字符串
这两个答案的工作方式是如何选择它们作为答案。
时退房System.Globalization.NumberStyles
枚举在Int64.Parse适当超载。如果指定System.Globalization.NumberStyles.Any
,它应该工作:
long v = Int64.Parse(s, System.Globalization.NumberStyles.Any);
但请注意,您在解析数已精度的限制,(只有13位小数,但被指定为E + 15)。此外,“任何”枚举可能超过您真正需要 - 在这种情况下,您只需要AllowDecimalPoint
和AllowExponent
:
long v = Int64.Parse(s, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowExponent);
您确定不想要解析double
吗?
var myDouble = double.Parse(myString);
然后您可以尝试转换为long
。
var myLong = Convert.ToInt64(myDouble);