我试图显示从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") + "%";
答案 0 :(得分:7)
嗯,double.NaN
是0.0 / 0.0
的结果。
0.0 / 0.0 == double.NaN
这就是number
和number1
均为0.0
的原因。表示
double.TryParse(SelectedQuoteForEditing.JobPrice, out number);
double.TryParse(lblRate.Content.ToString().ToString(), out number1);
SelectedQuoteForEditing.JobPrice
是0.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)
添加到此变量。