检查变量是否为无穷大

Check if variable is infinity

我正在编写程序,其中存在添加变量,可能是无穷大。在某些地方 neg_infinity + infinity 应该是 neg_infinityinfinity,所以我试图让 'if' 来保证正确的结果。但我不知道如何检查变量是否为无穷大。 简单的if variable = infinity是错误的,导致infinity = infinityinfinity != infinityExample。片段:

let p = 42. /. 0.;;

if p = infinity then
    print_string "Yes!\n"
else
    print_string "NO!\n";;

if p != infinity then
    print_string "Yes!\n"
else
    print_string "NO!\n";;

打印双倍 "YES"。甚至 p <= infinityp >= infinity.
我的想法是检查,如果 p >= infinity(我相信,只有无穷大可以满足不等式。),但我不知道它是否总是正确的。
还检查了 ==,但没有按预期工作。

我不知道,OCaml 中如何正确解析它,那么它应该如何实现?

不要使用 != 表示不等式,使用 <>.

# let p = 42. /. 0.;;
val p : float = infinity
# p = infinity;;
- : bool = true
# p <> infinity;;
- : bool = false
# 

通用相等性是 =。 通用不等式是 <>.

特殊目的(奇怪和不愉快)平等是 ==。 特殊目的(奇怪且不愉快)的不等式是 !=

(我在开玩笑,但不是开玩笑。)