2014-04-07 46 views
0

我有一個簡單的C#字符串ToDouble轉換,如圖所示。 拋出的異常提到日期時間轉換,但字符串既不像日期,也不是分配給的變量是DateTime變量。有人可以幫忙嗎?與日期混淆的字符串。 ToDouble問題在C#

謝謝。

enter image description here

+1

請張貼代碼和異常爲文本,不是照片。 –

回答

1

System.Convert.ToDouble將默認使用double.Parse與當前文化。如果您的小數點分隔符不是.,您可能會遇到此異常。

DateTime事情是誤導,因爲intellisense只是試圖幫助你。其實這是一個數字而不是DateTime。所以這不是你的錯,但Visual-Studio團隊可以改進這個信息。 FormatExceptionMessage屬性不包含DateTime

這聽起來像你想的不變文化:

double d = double.Parse("0.0005", CultureInfo.InvariantCulture); 

如果如果格式是有效的,你應該使用double.TryParse不確定:

double d; 
if (double.TryParse("0.0005", NumberStyles.Any, CultureInfo.InvariantCulture, out d)) 
{ 
    Console.Write("Value is: " + d); 
}; 
0

的轉換取決於你的國家和文化的設置。

如果您的國家/地區不是使用.作爲小數點,則應使用CultureInfo.InvariantCulture作爲轉換的第二個參數。或者,您可以在您的本地文化中指定數字,但是當您將應用程序交給使用其PC上的其他文化的用戶時,很容易出現問題。

0

不知道爲什麼你會得到錯誤...但你有沒有嘗試過這樣的事情?如果是這樣,它會產生相同的錯誤?

即,double.Parse默認使用當前文化。有一個讀of the answer posted by Mr Skeet in this SO post

string sVal ="0.0005"; 
double dVal = 0.0; 

if (double.TryParse(sVal, out dVal)) 
{ 
    // Success !! 
} 
else 
{ 
    // Could not convert 
}