Gambit计划对带小数的数字进行错误计算

时间:2014-04-14 22:29:55

标签: scheme gambit

我正在使用gambit-c intepreter来评估方案算术运算,但它的结果有点偏。例如我执行(+ 23 20.01)它给了我43.010000000000005,而不是43.01。

仅当我使用带有2个小数点的数字时才会出现这种情况。

这是否有解决方法?

1 个答案:

答案 0 :(得分:4)

它与浮点计算的完成方式有关。请阅读What Every Programmer Should Know About Floating-Point Arithmetic

你很幸运!在Scheme中,您可以使用确切的数字来解决此问题:

(+ 23 #e20.01) ; ==> 4301/100

你可以通过以下方式使其不准确:

(exact->inexact (+ 23 #e20.01)) ; ==> 43.01