【问题标题】:Gambit scheme incorrect calculation for numbers with decimalsGambit 方案对带小数的数字的计算不正确
【发布时间】:2014-04-14 22:29:55
【问题描述】:

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

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

有解决办法吗?

【问题讨论】:

    标签: scheme gambit


    【解决方案1】:

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

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

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

    您可以通过以下方式使其不精确:

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

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多