カレッヂ |
質問者 ニッキー
投稿日 1/28(日) 15:06:58
perlのリファレンスを見たんですができません。 $a=sqrt(4); だと、$aは当然2になりますが、 $z=$b*$b-4*$a*$c; $x=sqrt($z); このように指定するとエラーが出ます。 もちろん、$a$b$cは入力してあり、 $zも普通に演算します。 また、 $z=4; とすれば、$xにはちゃんと$zのルートが記入されます。 どなたか、理由を教えて下さい。 |
回答者 さくら
[削除]
投稿日 1/29(月) 02:15:52
このコードは、正しいコードです。 例えば、 $a = 4; $b = 10; $c = 4; このように代入すると、$z の値は36になります。 ルート36は、6です。 $x の値は 6 になります。 但し、$z の値が 負の数になる場合は計算できない。 対数は、正の実数に対してのみ定義されているので、 下記のようなメッセージを吐き出す。 Can't take sqrt of *** 意味は *** のルートは計算できないと言っている。 これは、致命的エラーを引き起こすので、プログラムは、ここで終了する。 もし、これを、使いたければ eval でトラップする事です。 このような解答を望んでいなければ、失礼しました。 |
回答者 羊
[削除]
投稿日 1/29(月) 11:25:16
$z=$b*$b-4*$a*$c; if($z >= 0){ $x=sqrt($z); } else{ #負の数だったときの処理 } こんな感じの数値チェックが必要になると思います。 |
質問者 ニッキー
[削除]
投稿日 1/31(水) 18:54:25
さくらさん、解説ありがとうございます。 羊さん、回避するスクリプトありがとうございます。 今回は式を見ればわかると思いますが、二次方程式を作ってみたく、 いろいろとやっていました。 またご迷惑かけることがあると思いますが、 その節もよろしくお願いします。 ご迷惑おかけいたしました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |