我正在使用Perl创建一个迷你搜索引擎。虽然这样做我正在使用一个带有日志到基数10的公式。但是对于某些值我得到一个错误:
无法记录-9.4351e + 0.007。
无法跟踪我从哪里收到此错误。我只是想忽略这个案子。如何在Perl中处理这个问题。查找基数10的子程序如下:
sub log10 {
my $n=shift;
return log($n)/log(10);
}
所以我可能正在寻找一张支票,上面写着,如果是这样,那么价值就找不到日志。
答案 0 :(得分:6)
您无法记录负数。
有关详细信息,请参阅Wolfram MathWorld。
答案 1 :(得分:2)
除了值为负数之外,字符串-9.4351e+0.007
不是有效数字,因为浮点常量的指数部分只能是整数。
您必须将字符串传递给log10
函数,因为Perl不会以这种格式抱怨数字。
你需要查看这些值的来源,因为在调用函数之前出现了问题,即使对于那些可以无错误地传递给log
的值,它也可能会给你不正确的结果。 / p>
答案 2 :(得分:1)
“ln y
”表示“找到x
ex
等于y
”。
e
是一个正数(接近2.17828),所以无论你将e
与自身相乘多少次,你都不会得到一个负数。
您无法找到负数日志。
正如鲍罗丁还指出,-9.4351e+0.007
不被Perl识别为数字。
>perl -wE"say 0+'-9.4351e+0.007'"
Argument "-9.4351e+0.007" isn't numeric in addition (+) at -e line 1.
-9.4351