Floating point ocaml中奇怪的算术精度

Floating point ocaml中奇怪的算术精度,floating-point,ocaml,Floating Point,Ocaml,可能重复: 我在OCaml中遇到了一个奇怪的算术精度问题。看: # 1.1+.2.2;; - : float = 3.30000000000000027 只有当我做某事的时候才会发生:某事。有人能试试吗?Ocaml浮点数是双精度数。在其他编程语言中也会有同样的行为。也许您需要浮动(Ocaml没有提供) 计算机总是有有限精度的本机数字(很像计算器)。这是使用浮点值的现实。虽然1.1是用两位小数精确表示的,但它需要无限多的二进制数字来表示该值。由于使用有限位数的二进制存储1.1,因此会出现舍入

可能重复:

我在OCaml中遇到了一个奇怪的算术精度问题。看:

# 1.1+.2.2;;
 - : float = 3.30000000000000027
只有当我做某事的时候才会发生:某事。有人能试试吗?

Ocaml浮点数是双精度数。在其他编程语言中也会有同样的行为。也许您需要浮动(Ocaml没有提供)


计算机总是有有限精度的本机数字(很像计算器)。

这是使用浮点值的现实。虽然1.1是用两位小数精确表示的,但它需要无限多的二进制数字来表示该值。由于使用有限位数的二进制存储1.1,因此会出现舍入错误。

这并不奇怪,这是浮点数固有的。您是第1000位(大概)偶然发现这一点的用户。