【问题标题】:Absolute value for floats in core OCaml核心 OCaml 中浮点数的绝对值
【发布时间】:2009-03-20 17:37:56
【问题描述】:

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

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

这似乎适用于正面但不适用于负面,引用:

这个表达式的类型为 float -> float 但在这里与 int 类型一起使用

我的逻辑有什么错误?

【问题讨论】:

    标签: floating-point ocaml absolute-value


    【解决方案1】:

    核心语言确实有一个,abs_float

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

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

    【讨论】:

      【解决方案2】:

      当你输入时

      absF -1.0;;
      

      OCaml 将其解释为

      (absF) - (1.0);;
      

      即作为减法。相反,做

      absF (-1.0);;
      

      【讨论】:

        【解决方案3】:

        如果你有 int 值可以使用

        # abs(-1)
        - : int = 1
        

        如果你有一个浮点数

        # abs_float(-1.0)
        - : float = 1.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-04
          • 2023-04-03
          • 2020-10-31
          • 1970-01-01
          • 2021-11-17
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多