您可能会对在答案明显错误的情况下为什么能继续进行计算感到奇怪。IEEE 运算允许您区分可以忽略的错误答案的种类,如 NaN 或 Inf。然后,可以根据此种区分来作决定。
不妨考虑一个电路模拟的例子。在 50 行的特定计算中,(出于参数原因)唯一关注的变量是电压。进一步假设其值只可能是 +5v、0、-5v。
仔细安排计算的每一部分以强制每个子结果在正确范围内,这是很可能实现的:
如果计算值大于 4.0,返回 5.0
如果计算值介于 -4.0 和 +4.0 之间,返回 0
如果计算值小于 -4.0,返回 -5.0
此外,由于 Inf 不是允许值,所以需要特殊的逻辑来确保不会与较大的数相乘。
利用 IEEE 运算,此逻辑可以简化许多。计算可以用显而易见的方式编写,并且只需强制最终结果为正确的值-因为 Inf 可以出现并且可以很容易地测出。
此外,还可检测到 0/0 的特殊情况并按照您的意愿进行处理。结果更易读取且执行起来更快,因为无需进行不必要的比较。