Gambit方案对带小数的数字计算不正确



我正在使用gambit-c intelpreter来评估scheme算术运算,但它的结果有点错误。例如,我执行(+2320.01),它给我的是43.010000000000005,而不是43.01。

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

有解决办法吗?

这与浮点计算的完成方式有关。请阅读每个程序员应该知道的浮点运算。

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

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

你可以用使其不精确

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

最新更新