コアのOCamlでの山車の絶対値
-
21-08-2019 - |
質問
私はOCamlのコア言語でのフロートのための絶対値関数を必要としています1を所有していないようですので、私は次のように書いてます:
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
陽性のためではなく、ネガのために働くようで、引用ます:
この式は、float型を持つ - >フロートが、ここではint型
で使用されています私のロジックのエラーとは何ですか?
解決
あなたが入力すると、
absF -1.0;;
のOCamlは
として解釈します(absF) - (1.0);;
すなわち。減算として。代わりに、行う
absF (-1.0);;
他のヒント
コア言語は1、abs_float
を持っています。
また、あなたは単項否定を表すために~-.
を使用することができ、これは~-
演算子と同様に、整数に適用されます。あなたはこのように(それがすでに存在していても)、そのような演算子を定義することができます:
let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a
あなたはint型の値を持つ場合に使用することができます。
# abs(-1)
- : int = 1
他にあなたがフロートを持っている場合は、
# abs_float(-1.0)
- : float = 1.
所属していません StackOverflow