我遇到了意想不到的行为,希望有人能就重点调查的领域提供一些指导。
我有两种方法,一种本质上是对双精度执行除以零测试,第二种调用extern
非托管 dll 的方法。
注意:在 .Net 运行时,将 Double 除以零应该返回一个 Infinity 值(有趣的是正面或负面的味道)。
我正在做的伪代码看起来像这样:
InfinityTest(); // Returns an Infinity value as expected
DllCall();
InfinityTest(); // Divide by zero error on second call.
第一次调用InfinityTest()
按预期返回值 Infinity。第二次调用InfinityTest()
引发了我没想到的除以零异常。
更新
下面的有效InfinityTest()
代码。为简洁起见,我删除了 try/catch 元素等。我无权详细介绍DllCall()
伪代码元素,抱歉。
private double InfinityTest()
{
double a = 1.0;
int b = 0;
return a / b;
}