我正在尝试学习Clojure并尝试定义此简单函数:

user=> (defn triple [arg] (* 3 arg))
#'user/triple
user=> (triple 1)
3
user=> (triple 1.01)
3.0300000000000002


谁能解释为什么结果末尾有2?

最佳答案

由于计算机上使用浮点数表示,因此对这些数字的操作不精确。它适用于JVM和物理机。有关更多讨论,请参见Floating point inaccuracy examples。该问题的答案中还附有详尽的文章What Every Computer Scientist Should Know About Floating-Point Arithmetic

08-16 08:42