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);
    }
}


以上是C#double值返回NaN的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>