我有一個簡單的C#字符串ToDouble轉換,如圖所示。 拋出的異常提到日期時間轉換,但字符串既不像日期,也不是分配給的變量是DateTime變量。有人可以幫忙嗎?與日期混淆的字符串。 ToDouble問題在C#
謝謝。
我有一個簡單的C#字符串ToDouble轉換,如圖所示。 拋出的異常提到日期時間轉換,但字符串既不像日期,也不是分配給的變量是DateTime變量。有人可以幫忙嗎?與日期混淆的字符串。 ToDouble問題在C#
謝謝。
System.Convert.ToDouble
將默認使用double.Parse
與當前文化。如果您的小數點分隔符不是.
,您可能會遇到此異常。
DateTime
事情是誤導,因爲intellisense只是試圖幫助你。其實這是一個數字而不是DateTime
。所以這不是你的錯,但Visual-Studio團隊可以改進這個信息。 FormatException
的Message
屬性不包含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);
};
的轉換取決於你的國家和文化的設置。
如果您的國家/地區不是使用.
作爲小數點,則應使用CultureInfo.InvariantCulture
作爲轉換的第二個參數。或者,您可以在您的本地文化中指定數字,但是當您將應用程序交給使用其PC上的其他文化的用戶時,很容易出現問題。
不知道爲什麼你會得到錯誤...但你有沒有嘗試過這樣的事情?如果是這樣,它會產生相同的錯誤?
即,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
}
請張貼代碼和異常爲文本,不是照片。 –