浮点转换和算术

时间:2017-11-21 15:02:51

标签: compiler-errors floating-point type-conversion ocaml

我刚刚开始学习OCaml而且我不明白为什么这个函数不能编译。

add_half为列表中的每个值添加0.5;首先,他们必须在浮动

示例:

  • 输入:[3; 7; 19; -4]
  • 输出:[3.5; 7.5; 19.5; -3.5]

代码:

#include <iostream>

编译器给出以下错误:

let rec add_half l = match l with
| [ ] -> [ ]
| x::xs -> let l = float_of_int x
           in (x + 0.5) :: add_half xs

如何更改此功能?

1 个答案:

答案 0 :(得分:3)

首先,当您将x转换为浮点数时,您将继续使用int值(x)而不是转换后的值(混淆地命名为{ {1}})。其次,OCaml具有特定于浮点的算术运算符,由尾随l表示。因此,浮点加法需要.运算符。

编译:

+.