ocaml中奇怪的算术精度

zie*_*ony -3 floating-point ocaml

可能重复:
JavaScript的数学是否被破坏?

我在OCaml的算术精度方面遇到了奇怪的问题.看:

# 1.1+.2.2;;
 - : float = 3.30000000000000027
Run Code Online (Sandbox Code Playgroud)

它发生在我做的事情:something.1 + something.2.有人可以试试吗?

Dav*_*ber 5

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