1. ホーム
  2. floating-point

[解決済み] コアOCamlにおける浮動小数点数の絶対値

2022-02-25 09:24:34

質問

OCamlでfloatの絶対値関数が必要なのですが、コア言語では持っていないようなので、以下のように書きました。

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

を引用していますが、これはポジティブには有効ですが、ネガティブには無効のようです。

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

私のロジックの間違いは何ですか?

解決方法は?

と入力すると

absF -1.0;;

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

(absF) - (1.0);;

すなわち、引き算として。 その代わり、次のようにします。

absF (-1.0);;