2015-11-03 94 views
1

我正在写程序,其中存在添加变量,这可能是无穷大的。在某些地方neg_infinity + infinity应该是neg_infinityinfinity,所以我试图让'如果'来保证正确的结果。但我不知道如何检查,如果变量是无穷大。 简单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";; 

打印双“是”。即使是p <= infinityp >= infinity
我的想法是检查,如果p >= infinity(我相信,只有无限可能满足这种不平等),但我不知道它总是会是正确的。
也检查了==,但没有按预期工作。

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

回答

5

请勿将!=用于不等式,请使用<>

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

通用平等为=。 通用不平等是<>

特殊用途(奇怪和不愉快)等于==。 特殊用途(奇怪和不愉快)的不平等是!=

(我在开玩笑,但没有那么多。)

+0

在大学里有人说过,“用任何你想要的东西”。我因为没有想到而受到惩罚。谢谢。 – Tacet