【发布时间】:2016-11-29 00:54:54
【问题描述】:
我有一个可能是零的数字。我除以那个数字,所以我想测试它是否为零以防止 NaN 和无穷大。由于除法内的舍入误差,我是否仍可能创建 NaN / 无穷大?
double x; // might be zero
double y;
if(x != 0) return y / x;
编辑
感谢您的回复。然后我会添加一些子问题。
1) 假设 x 和 y 都不是 NaN / +inf 或 -inf,导致 -inf / +inf 的除法会导致更多 CPU 周期或任何其他不需要的行为吗? (会不会崩溃?)
2) 有没有办法防止除法导致无穷大?使用偏移量等等。
【问题讨论】:
-
它们可能是无穷大甚至是纳米
-
如果
y已经是NaN,那么结果也是NaN。 -
在某人已经发布了一个答案(在本例中为 3 个)之后添加更多问题并不是很好 - 这会使这些答案看起来不完整,尽管它们在编写时并不完整。
-
这就是为什么我写了一个很大的“编辑”。 :) 我知道这不好,但不知怎的,我错过了原始帖子的问题。