OCaml 浮点数计算

OCaml 是一门强大的函数式静态编程语言。你可以享受纯函数式编程的快乐。又能编译成原生二进制可执行应用程序。今天要带给大家的是非常基础的知识。浮点数的计算。

OCaml 有多个基础数据类型,数学类型有整数,浮点数。

我们讲浮点数今天。

OCaml 中的浮点数,跟其他编程语言有一点相似,那就是表现为 带.符号的数字。小数点左边是整数位,右边是小数位

下面看我们在utop中执行的浮点数计算示例。

Type #utop_help for help about using utop.

─( 15:26:31 )─< command 0 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. 6.1
;;
- : float = 10.1
─( 15:26:31 )─< command 1 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. 6;;
Error: This expression has type int but an expression was expected of type
         float
  Hint: Did you mean `6.'?
─( 15:26:37 )─< command 2 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. 6.;;
- : float = 10.
─( 15:26:42 )─< command 3 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. .6;;
Error: Syntax error
─( 15:26:46 )─< command 4 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. 0.6;;
- : float = 4.6
─( 15:26:53 )─< command 5 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 *. 1.17;;
- : float = 4.68
─( 15:26:57 )─< command 6 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 * 1.17;;
Error: This expression has type float but an expression was expected of type
         int
─( 15:27:53 )─< command 7 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 /. 1.17;;
- : float = 3.41880341880341909
─( 15:27:56 )─< command 8 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 / 1.17;;
Error: This expression has type float but an expression was expected of type
         int
─( 15:28:07 )─< command 9 >────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 + 1.17;;
Error: This expression has type float but an expression was expected of type
         int
─( 15:28:10 )─< command 10 >───────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 +. 1.17;;
- : float = 5.17
─( 15:28:15 )─< command 11 >───────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 -. 1.17;;
- : float = 2.83
─( 15:28:19 )─< command 12 >───────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop # 4.0 - 1.17;;
Error: This expression has type float but an expression was expected of type
         int
─( 15:28:23 )─< command 13 >───────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
utop #

utop是OCaml的互动式编程命令行界面,你可以用opam安装它。

opam install utop

安装之后,可以在命令行下面运行utop,进入互动编程界面。

想要退出,也简单,输入Option[windows平台应该是对应win键] + d

你就可以退出utop互动界面。

 

我们需要注意:

1) OCaml的浮点数写法,有几个特殊

比如6.0 这个浮点数,我们可以写 6.0,也可以写成6. 省略小数点后面的0,这也是合法的。但是我建议是大家严格写。

2) 另外就是浮点数的加减乘除运算,需要在对应的符号加一个小数点,表示这是一个浮点运算。

不然会报错:

This expression has type int but an expression was expected of type
         float

3) 浮点数计算可以是负值,例如:

 # 4.0-.11.7;;
- : float = -7.69999999999999929

4) 我们需要注意,输入完表达之后,输入两个分号;;让程序执行。编译器会编译,并执行我们的代码。

5) 再者,我们不能混用整数与浮点数进行运算,必须把整数转成浮点数才能计算

# (float_of_int 8) /. 1.17;;
- : float = 6.83760683760683818

参见示例,我们用函数 (float_of_int x) 来把x 的整数,转成它的浮点数,然后再计算就可以了

 

关于OCaml的浮点数,你学会了吗?

这是基础中的基础知识。跟着锋哥爱学习,一起学习OCaml的编程吧。

 

 

今天就讲解到这里,

分类: 默认 标签: 发布于: 2022-06-26 15:40:30, 更新于: 2022-06-26 15:40:30