以NaN计算剩余成本显示结果的百分比

时间:2019-06-07 13:51:29

标签: c# wpf

我试图显示从number中减去number1之后剩下的百分比。我正在调用的值包含一个£符号,运行代码时我得到的结果是 NaN ,我想这与£有关删除后的百分比显示。有人知道我该如何解决吗?我已经尝试了好几个小时没有运气:(预先感谢。

double number;  
double number1;  
double result;  

double.TryParse(SelectedQuoteForEditing.JobPrice, out number);  
double.TryParse(lblRate.Content.ToString().ToString(), out number1);  

var left = Math.Round((number - number1) / number * 100, 2);  

result = left;  

ERGPerc.Content = result.ToString("P") + "%";  

2 个答案:

答案 0 :(得分:7)

嗯,double.NaN0.0 / 0.0的结果。

0.0 / 0.0 == double.NaN

这就是numbernumber1均为0.0的原因。表示

double.TryParse(SelectedQuoteForEditing.JobPrice, out number);   
double.TryParse(lblRate.Content.ToString().ToString(), out number1);  

SelectedQuoteForEditing.JobPrice0.0或无效(例如,空字符串),对于lblRate.Content.ToString().ToString()也是相同的。

检查值double.TryParse返回:

if (double.TryParse(SelectedQuoteForEditing.JobPrice, out number) &&  
    double.TryParse(lblRate.Content.ToString(), out number1) {

  var left = Math.Round((number - number1) / number * 100, 2);  
  ERGPerc.Content = left.ToString("P") + "%"; 
}  
else {
  // at least one value is invalid
}

编辑::如果您想解析 currency ,说出GB(请参见注释中的£150.00),则必须让系统对此了解:

double.TryParse(SelectedQuoteForEditing.JobPrice, 
  NumberStyles.Any,                    // allow currency symbols
  CultureInfo.GetCultureInfo("en-GB"), // which currency? GB 
  out number);    

double.TryParse(lblRate.Content.ToString(), 
  NumberStyles.Any,                    // allow currency symbols
  CultureInfo.GetCultureInfo("en-GB"), // which currency? GB 
  out number1);             

否则,Parse失败(£意味着什么?它不纠正浮点值的一部分!),您将得到0.0和{{ 1}}和number执行number1

答案 1 :(得分:1)

如果SelectedQuoteForEditing.JobPrice和lblRate.Content是2个字符串,末尾/开头为£,例如100£,100£或100英镑。您只需将.Replace("£", string.Empty)添加到此变量。