Mat*_*lly 9 floating-point ocaml absolute-value
我需要OCaml中浮点数的绝对值函数,核心语言似乎没有,所以我写了以下内容:
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
Run Code Online (Sandbox Code Playgroud)
这似乎是积极的,但不是负面的,引用:
此表达式的类型为float - > float,但此处与int类型一起使用
我的逻辑错误是什么?
nlu*_*oni 13
核心语言确实有一个,abs_float.
此外,您可以使用~-.表示一元否定,这也适用于整数以及~-运算符.您可以像这样定义这样的运算符(即使它已经存在):
let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a
Run Code Online (Sandbox Code Playgroud)
Mar*_*bst 10
当你输入
absF -1.0;;
Run Code Online (Sandbox Code Playgroud)
OCaml将其解释为
(absF) - (1.0);;
Run Code Online (Sandbox Code Playgroud)
即作为减法.相反,做
absF (-1.0);;
Run Code Online (Sandbox Code Playgroud)
如果你有 int 值可以使用
# abs(-1)
- : int = 1
Run Code Online (Sandbox Code Playgroud)
否则如果你有一个浮动
# abs_float(-1.0)
- : float = 1.
Run Code Online (Sandbox Code Playgroud)