我有这个等式
double x = ((newCount/allCount)/.8)*5.0;
newCount
是值为0的double
allCount
是一个值为0的双重
x
的结果是-nan(0x8000000000000)
为什么会发生这种情况以及如何在 objective c
中检查此值以为其指定默认值
答案 0 :(得分:1)
你是diving by zero。您可以使用以下方式检查:
isnan(x)
答案 1 :(得分:0)
allCount是0,因此你只是除以0(如果你不知道那就不可能......)所以在你指定x之前,只需确保allCount不是0。
if (allCount != 0)
double x = ((newCount/allCount)/.8)*5.0;
答案 2 :(得分:0)
问题在于分母(allCount
)为0;除以零是不允许的,答案不是数字。你可以做的最简单的事情就是在进行分割之前测试它:
if (allCount != 0) {
x = ((newCount/allCount)/.8)*5.0
} else {
x = defaultValue;
}
使用C的浮点环境和测试FE_DIVBYZERO
异常有更复杂的方法,但是这是标准的,很少使用,因此后来的代码读者可能更难理解。