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