1

我正在尝试计算两个对数值的比率,a然后b将其转换回非对数值。由于这些是对数值,因此比率c为:

from numpy import *
c = a - b
# convert to non-log value
val = exp(c)

考虑这个例子:

a = -336929.42757
b = -334216.16795

由于这些是对数值,因此比率为:

c = -2713.259620000026

然后我将比率转换为非对数值并得到0

val = exp(c)

我怎样才能避免这种情况?在没有这种行为的情况下,获取两个日志的比率并转换回非日志的正确方法是什么?

4

2 回答 2

3

好吧,您期望的数字太小而无法使用float. 例如,在我的系统中:

In : sys.float_info.min_exp
Out: -1021

因此,你得到 0.0

如果您只想将其与某个截止值进行比较,您仍然可以使用结果 0。在您的情况下,“真实”不可表示的数字与 0 一样好。

于 2013-04-15T20:31:05.030 回答
2

问题显然是 exp(-2713.259620000026) 不能很好地用浮点数表示。但由于您知道号码的日志,您可以执行以下操作:

c10 = c/log(10.)

所以

x = 10**c10

或者,但将整数和小数部分分开:

x = 4.29 x 10^(-1179)
于 2013-04-15T20:35:44.760 回答