我正在使用 Perl 创建一个迷你搜索引擎。这样做时,我使用了一个以 10 为底的日志公式。但是对于某些值,我收到了一个错误:
无法记录 -9.4351e+0.007。
无法跟踪我从哪里得到这个错误。我只想忽略这个案例。如何在 Perl 中处理这个问题。查找以 10 为底的日志的子程序如下:
sub log10 {
my $n=shift;
return log($n)/log(10);
}
所以可能我正在寻找一张支票,上面写着如果某某某值找不到日志。
您不能记录负数。
有关详细信息,请参阅Wolfram MathWorld 。
除了值为负之外,字符串-9.4351e+0.007
不是有效数字,因为浮点常量的指数部分只能是整数。
您必须将字符串传递给您的log10
函数,因为 Perl 不会抱怨这种格式的数字。
您需要查看这些值的来源,因为在调用您的函数之前出现了问题,即使对于那些可以正确传递的值,它也可能会给您不正确的结果log
。
“ ln y
”的意思是“找到等于的x
地方”。ex
y
e
是一个正数(接近 2.17828),所以无论你e
与自身相乘多少次,你永远不会得到一个负数。
您找不到负数的日志。
正如 Borodin 还指出的那样,-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