当前位置:  开发笔记 > 编程语言 > 正文

核心OCaml中浮点数的绝对值

如何解决《核心OCaml中浮点数的绝对值》经验,为你挑选了2个好方法。

我需要OCaml中浮点数的绝对值函数,核心语言似乎没有,所以我写了以下内容:

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

这似乎是积极的,但不是负面的,引用:

此表达式的类型为float - > float,但此处与int类型一起使用

我的逻辑错误是什么?



1> nlucaroni..:

核心语言确实有一个,abs_float.

此外,您可以使用~-.表示一元否定,这也适用于整数以及~-运算符.您可以像这样定义这样的运算符(即使它已经存在):

let (~-) a : int = 0 - a
let (~-.) a : float = 0.0 -. a



2> Mark Probst..:

当你输入

absF -1.0;;

OCaml将其解释为

(absF) - (1.0);;

即作为减法.相反,做

absF (-1.0);;

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有