2010-01-13 482 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);