我正在尝试学习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。