0

Perlを使用してミニ検索エンジンを作成しています。その間、基数10への対数を含む数式を使用しています。ただし、値によってはエラーが発生します。

-9.4351e+0.007のログを取得できません。

このエラーが発生している場所を追跡することはできません。この場合は無視したいだけです。これをPerlでどのように処理できますか。基数10へのログを見つけるためのサブルーチンは次のようになります。

sub log10 {
my $n=shift;
return log($n)/log(10);
}

だからおそらく私はそうならと言うチェックを探しているので、値はログを見つけられません。

4

3 に答える 3

6

負の数のログを取ることはできません。

詳細については、 WolframMathWorldを参照してください。

于 2012-04-20T02:52:20.430 に答える
2

値が負であることは別-9.4351e+0.007として、浮動小数点定数の指数部は整数のみであるため、文字列は有効な数値ではありません。

log10Perl はこの形式の数値について文句を言わないので、関数に文字列を渡す必要があります。

関数が呼び出される前に何か問題が発生しているため、これらの値のソースを確認する必要がありlogます。エラーなしで渡すことができる値であっても、おそらく間違った結果が返される可能性があります。

于 2012-04-20T03:27:17.293 に答える
1

" " は "等しい場所ln yを見つける" という意味です。xexy

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
于 2012-04-20T03:24:40.240 に答える