OCamlのfloatの絶対値関数が必要ですが、コア言語には絶対値関数がないようです。そのため、次のように記述しました。
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
これはポジティブには機能するようですが、ネガティブには機能しないようです。
この式の型はfloat->floatですが、ここではint型で使用されます
私のロジックのエラーは何ですか?
OCamlのfloatの絶対値関数が必要ですが、コア言語には絶対値関数がないようです。そのため、次のように記述しました。
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
これはポジティブには機能するようですが、ネガティブには機能しないようです。
この式の型はfloat->floatですが、ここではint型で使用されます
私のロジックのエラーは何ですか?
コア言語には1つありabs_float
ます。
また、単項否定を示すために使用できます。これは、演算子~-.
を使用した整数にも適用されます。~-
このような演算子は(すでに存在していても)次のように定義できます。
let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a
入力するとき
absF -1.0;;
OCaml は次のように解釈します。
(absF) - (1.0);;
つまり、減算として。代わりに、
absF (-1.0);;
int値がある場合は使用できます
# abs(-1)
- : int = 1
他にフロートがある場合
# abs_float(-1.0)
- : float = 1.