2014-12-19 58 views
2

在OCaml中,比較Integer 0與Integer 0返回true;然而 ,比較浮0.爲浮動收益0.false如何比較OCaml中的浮點數?

# 0 == 0;; 
- : bool = true 
# 0. == 0.;; 
- : bool = false 

怎樣才能正確地比較花車?

+1

總是比較浮子對增量,例如,如果(F1 - F2)<0.0000001 – Leo

+2

@Leo:您忘記在比較的腹肌。 –

+1

你應該使用相對比較,而不是絕對比較。 – nlucaroni

回答

6

請勿使用==,這是一種專門的「物理平等」。使用日常代碼=

# 0 = 0;; 
- : bool = true 
# 0.0 = 0.0;; 
- : bool = true 

對於不等式,請使用<>!=運營商是爲了「身體不平等」,這應該像日常代碼中的瘟疫一樣避免。

# 0 <> 0;; 
- : bool = false 
# 0.0 <> 0.0;; 
- : bool = false 
+0

謝謝Jeffrey。但是,我們應該如何緩解'!='? '#0.!= 0。;; - :bool = true #0!= 0 ;; - :bool = false' – UnSat

+0

優秀的問題。出於同樣的原因,使用'''''。我會更新我的答案。 –