[英]C# > Convert string to double when input=“”
我想將字符串轉換為雙精度字(不是很基本的問題嗎?)
string input = "45.00000";
double numberd = Double.Parse(input, CultureInfo.InvariantCulture);
=>我的代碼有效,我非常高興。
但是我可能有以下情況
string input = "";
double numberd = Double.Parse(input, CultureInfo.InvariantCulture);
在這種情況下,我的代碼無法正常工作,並且我收到Exception錯誤;(我想知道如何處理這種情況。理想情況下,當我得到此值時,我希望變量編號等於null。
誰能幫我 ? 謝謝
Microsoft建議使用Tester-Doer模式,如下所示:
string input = "";
double numberd;
if( Double.TryParse(input, out numberd) )
{
// number parsed!
}
使用Double
進行解析,但是使用Double?
儲存價值,也許?
Double number;
string input = ""; // just for demo purpose, naturally ;o)
Double? nullableNumber =
Double.TryParse(input, NumberStyles.Any, CultureInfo.InvariantCulture, out number)
? (Double?)number
: null;
// use nullableNumber
像double
這樣的基本類型不能為null。 您可以使用帶有double?
的可空版本double?
但是, Double.Parse
不返回double?
Double.Parse
double?
(只是普通的double
)。
您可以使用Double.TryParse
並檢查返回條件並設置一個double?
如果更合適,則將其相應地為null。
為什么不只捕獲異常並設置變量?
double numberd;
try {
numberd = Double.Parse(input, CultureInfo.InvariantCulture);
} catch (System.FormatException e)
numberd = 0.0;
}
或者,您可以使用Double.TryParse
怎么樣
Double? numberd = String.IsNullOrEmpty(str) ? null : Double.Parse(str)
在我的應用程序中,我正在解析CSV文件,我希望這些空字符串為零,因此我返回0.0而不是null,這一切都很好。
另外5個
添加一條if語句,比較字符串或環繞try / catch塊。
假設您不擔心空字符串以外的其他無效值,這是一個簡單的一線式:
Double? numberd = (input.Length == 0) ? null : (Double?)Double.Parse(input, CultureInfo.InvariantCulture);
mzabsky走在正確的道路上,但是他的解決方案無法建立,並且您不應該對空字符串進行硬編碼-最好檢查字符串的長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.