質問

私は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.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top