簡體   English   中英

使用double.Parse表示如果為Null值,則將值替換為0

[英]Use double.Parse that if Null value, then value replace with 0

我正在嘗試將字符串轉換為double。 如果遇到空值,則該值應為0(零)。 但是,它會出現一條錯誤消息:

“接線員'??' 不能應用於'double'和'double'類型的操作數。這有點令人困惑,因為兩個數字都是雙倍的?我該怎么解決這個問題?

double final = double.Parse(min.ToString()) ?? 0.0;

也許這個,假設min是一個string

double final = double.Parse(min ?? "0");

也許:

double final = (min == null) ? 0 : double.Parse(min);

編輯

更好的是:

double final = Convert.ToDouble(min);

根據文檔 ,該方法將返回

雙精度浮點數,等於值中的數字, 如果value為null,則為0(零)

出現此錯誤是因為左側? 必須是Nullable類型,可以將null作為值。

在你的代碼中:

double final = double.Parse(min.ToString()) ?? 0.0;

你在用?? 調用Null-coalescing運算符的運算符以及此運算符執行的操作是檢查double.Parse(min.ToString()) __evaluates值是否為double類型(值為類型)_是否為null。 如果它不為null,則將值賦給final ,否則為其賦值0.0

由於double是值類型而值類型變量不能為null,除非它們是Nullable ,您將收到錯誤,這就是您收到此錯誤的原因:

“接線員'??' 不能應用於'double'和'double'類型的操作數。“

要解決此問題,您可以嘗試這樣做:

 double final = Convert.ToDouble(min);

如果min為null,則返回零。

PS:盡量避免使用Parse方法,當它無法解析時拋出System.FormatExceptoin ,改為使用TryParse

string min = "2.s"; // not a number
double finals;
bool successed =  double.TryParse(min, out finals); // true if successed, otherwise false.
Console.WriteLine(successed? $"Yes! finals =  {finals}": $"No :( finals =  {finals}");
// finals is 0 if the parse didn't work.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM