1

背景

我有一个程序有时会抛出浮点异常,因为(主要)除以零,尽管检查了除以零值。这可能与浮点推测有关,但我不确定。

我已经使用feenableexcept/SIGFPE为 FPE 实现了一个处理程序,但这只会阻止我的程序死机,这比NaN在整个数据中传播 s 更好。

我发现了这个关于浮点陷阱的旧页面,并且似乎暗示这样的陷阱负责返回的默认行为NaNInf或者-Inf除以零。这让我开始思考。

问题

是否有可能以某种方式除以零总是返回值0.0?(有人可能想知道这个的有效性,但在我的情况下这是可取的)

细节

我在 linux 上使用英特尔编译器版本 13.0.0(gcc 版本 4.4.7 兼容性)。

4

2 回答 2

2

您如何实现自己的功能以满足您不寻常的划分要求?

template <typename T> T mydiv(T lhs, T rhs)
{
   return (0 == rhs ? lhs : lhs/rhs);
} 
于 2014-04-05T07:04:05.790 回答
0

除了搞乱宇宙规则之外

float b = a == 0 ? 3 : 3 + (5 / a);
于 2014-04-05T06:57:13.463 回答