标签: floating-point ocaml
可能重复: Is JavaScript's Math broken?
我在OCaml中算术精度方面存在奇怪的问题。看:
# 1.1+.2.2;; - : float = 3.30000000000000027
只有当我这样做时才会发生:something.1 + something.2。有人可以试试吗?
答案 0 :(得分:5)
这是使用浮点值的现实。虽然1.1精确地以十进制表示,但有两位数,但它需要无限数量的二进制数来表示该值。由于您使用有限数量的位存储1.1二进制,因此会出现舍入错误。
答案 1 :(得分:1)
Ocaml浮点数是IEEE754双精度数。您将在其他编程语言中具有相同的行为。也许你想要浮动bignums(Ocaml不提供)。
计算机始终具有有限精度的原始数字(很像计算器)。