[英]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.