2015-11-03 47 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