C#double值返回NaN
c#
我在这里有这个代码:
public double ProgressBar
{
get
{
return ((double)Completed / Progress);
}
}
但是当两个值(已完成和进度)都为 0 时,它总是返回 NaN。
我也试过:
public double ProgressBar
{
get
{
return ((double)Completed / (double)Progress);
}
}
相同的结果 NaN
我究竟做错了什么?
回答
不允许除以零,因此应避免。
根据文档:
尝试将整数或
Decimal数字除以零会引发DivideByZeroException异常。为防止出现异常,请确保整数或Decimal值的除法运算中的分母非零。将浮点值除以零不会引发异常;根据 IEEE 754 算术规则,它会产生正无穷大、负无穷大或非数字 (NaN)。
因此,如果您希望结果为0.0if Progressis 0,那么您应该在代码中如此明确地表达。例如像这样:
public double ProgressBar
{
get
{
return Progress == 0 ? 0.0 : ((double)Completed / (double)Progress);
}
}