【发布时间】:2016-01-16 05:20:57
【问题描述】:
我想问一个问题,为什么 (e^x-1)/x 对于非常接近于零的数字的计算值不能正常工作(例如,如果 x=10^-15,结果是 1.1102230),但是当我使用数学等价的公式 (e^x-1)/log(e^x) 时,它给出了 1.000000 的正确结果。谢谢。
【问题讨论】:
-
你试过(e^(x-1))/x吗?
-
但是公式应该和写的完全一样 (e^(x)-1)/x
-
您可能会在浮点 log(e^x) != x 中看到,因此计算是不同的。尝试打印出每一个操作。
-
这不只是抱怨使用精度有限的浮点数的局限性。有些包支持更高的精度。
-
@GmloMalo OP问题中的
log实际上是自然(以e为底)对数。在数学中它写为ln,但在编程语言中几乎总是写为log。 (尽管log在数学中通常被认为是以 10 为底的对数...)
标签: r floating-point computation rounding-error