私はPerlを使用してミニ検索エンジンを作成しています。そうすることで、ベース10にログを持つ式を使用しています。しかし、 :エラー:-9.4351e + 0.007のログを取ることができません
-9.4351e + 0.007のログを取ることはできません。
どこからこのエラーが発生しているのかを追跡することは不可能です。私はこの事件を無視したい。これはPerlでどのように処理できるのですか?ベース10にログを見つけるためのサブルーチンは、このようなものです:
sub log10 {
my $n=shift;
return log($n)/log(10);
}
だから、おそらく私はとてもので、値はログを見つけるいけない場合と言うのチェックを探しています。
原因を見つけることは不可能ではなく、アルゴリズムのバグを示しています。あなたはそれを飲み込むためにクルーザーを入れるよりも、エラーを修正する必要があります。 –
'' print log '-9.4351e + 0.007''を書くと、 "Argument" -9.4351e + 0.007が "数値ではありません"となります。実際にここで何が起こっているのですか?パラメータの真の価値は何ですか? – Borodin
'perl -MScalar :: Util -e 'print Scalar :: Util :: looks_like_number(q(-9.4351e + 0.007))、" \ n "''は '0'(偽)を出力します。あなたは数字ではないもののログを取ることはできません。あなたの問題は指数にあります。指数表記法は、浮動小数点指数を考慮して設計されていません。 perldoc perlnumberを参照してください。 – DavidO