9

OCamlのfloatの絶対値関数が必要ですが、コア言語には絶対値関数がないようです。そのため、次のように記述しました。

let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;

これはポジティブには機能するようですが、ネガティブには機能しないようです。

この式の型はfloat->floatですが、ここではint型で使用されます

私のロジックのエラーは何ですか?

4

3 に答える 3

14

コア言語には1つありabs_floatます。

また、単項否定を示すために使用できます。これは、演算子~-.を使用した整数にも適用されます。~-このような演算子は(すでに存在していても)次のように定義できます。

let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a
于 2009-03-20T20:01:38.030 に答える
11

入力するとき

absF -1.0;;

OCaml は次のように解釈します。

(absF) - (1.0);;

つまり、減算として。代わりに、

absF (-1.0);;
于 2009-03-20T17:47:35.653 に答える
4

int値がある場合は使用できます

# abs(-1)
- : int = 1

他にフロートがある場合

# abs_float(-1.0)
- : float = 1.
于 2015-11-20T16:46:06.473 に答える