Floating point 核心OCaml中浮动的绝对值
我需要OCaml中的浮点绝对值函数,而核心语言似乎没有,所以我写了以下内容:Floating point 核心OCaml中浮动的绝对值,floating-point,ocaml,absolute-value,Floating Point,Ocaml,Absolute Value,我需要OCaml中的浮点绝对值函数,而核心语言似乎没有,所以我写了以下内容: let absF (f:float) = if f > 0.0 then f else (f *. -1.0);; 这似乎适用于积极因素,但不适用于消极因素,例如: 此表达式的类型为float->float,但此处与int类型一起使用 我的逻辑中有什么错误?键入时 absF -1.0;; OCaml将其解释为 (absF) - (1.0);; i、 作为减法。相反,你应该这样做 absF (-1.0);;
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
这似乎适用于积极因素,但不适用于消极因素,例如:
此表达式的类型为float->float,但此处与int类型一起使用
我的逻辑中有什么错误?键入时
absF -1.0;;
OCaml将其解释为
(absF) - (1.0);;
i、 作为减法。相反,你应该这样做
absF (-1.0);;
核心语言确实有一个,
abs\u float
此外,您还可以使用~.
表示一元求反,这也适用于使用~-
运算符的整数。您可以这样定义这样一个操作符(即使它已经存在):
let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a
如果有int值,可以使用
# abs(-1)
- : int = 1
否则,如果你有一个浮动
# abs_float(-1.0)
- : float = 1.