2

PHPのようなエラーが発生しています

警告: ゼロ除算エラー。

私はまだいくつかの問題を計算したいと思っています。逆対数/逆対数を例で計算する方法を教えていただければ、もっと満足できます。

<?
    if(isset($_POST['submit'])) 
    { 
       $P=$_POST['P'];  // P=100000
       $rate=$_POST['rate']; // rate = 10.5
       $R=($rate/100);
       $N=$_POST['N']; // N = 78
       echo $P ."<br>" ;
       echo $R ."<br>" ;
       echo $N ."<br>" ;
       $NEW=($R/12);   // NEW = .00875
       $aa = (1+($NEW)); // aa = 1.00875
       $ab = bcpow('$aa', '$N',16); // ab = 1.9729529246182467
       $ac = ($ab-1); // ac = 0.9729529246182467
       $ad = bcdiv('$ab', '$ac', 3); // Div by Zero Error 
       $M = ($P*$NEW) *($ad);
       echo "The Installment is : " . $M . "<br>";
    }
?>
4

4 に答える 4

5

問題のある行:

$ad = bcdiv('$ab', '$ac', 3); // Div by Zero Error

ここでの問題は、$ab$acが引用符で囲まれているためです。彼らはすべきではありません。

それらを引用符で囲むということは、PHPが変数の数値ではなく、文字と、で$ab構成される文字列であると見なすことを意味します。$ab$ab

引用符を削除すると、機能し始めるはずです。

同じことが回線にも当てはまりますbcpow()

于 2013-01-04T11:41:21.223 に答える
1

bcpow('$aa', '$N',16);これらの変数が解析されると確信していますか? それらは一重引用符で囲まれた文字列として扱われ、数字がないため、単に偽物である可能性があります。($aa^$n電卓で入力すると失敗します)。

bcpow("'".$aa."'", "'".$N."'",16);二重引用符を使用するか、使用してみることができます。

于 2013-01-04T10:54:14.860 に答える
0

問題の原因を絞り込むには: string bcdiv ( string $left_operand , string $right_operand [, int $scale ] )

bcdiv はDivision by zero、右側のオペランドが 0 の場合にのみ返されるため、これが原因であると想定してバックトレースでき$acます。$ac関数呼び出しの前にエコーして、bcdiv空でないことを確認してください。

この線$ac = ($ab-1); // ac = 0.9729529246182467 $acがマイナスになることは間違いありません。

また、一重引用符も削除する必要があります。マニュアルを文字通りに解釈しないでください。int または double を渡すこともでき、関数によって変換されます。変数を double としてキャストしても。

//WITHOUT QUOTES
$ab = '1.9729529246182467';
$ac = ($ab-1);
echo bcdiv($ab, $ac, 3);
//output (2.027)

//WITH QUOTES
$ab = '1.9729529246182467';
$ac = ($ab-1);
echo bcdiv($ab, '$ac', 3);
//output Warning (2): bcdiv() [function.bcdiv]: Division by zero
于 2013-01-04T10:54:08.207 に答える
0

私もあなたのコードを理解していませんでしたが、値のアンチログ/ログを計算するコードは次のとおりです

<?php

$log = 11;
$e   = 2.718281828;
$dn  = 1;

// Calculate Antilog of $log = 11
$ans = pow($e, $log);
$antilog = round($ans*10000)/10000;
echo "<br /> Antilog : ".$antilog;

// Calculate Log of $log = 11
$ans = log($log)/$dn;
$log = round($ans*10000)/10000;
echo "<br /> Log : ".$log;

// Calculate Antilog / Log of $log = 11
echo "<br /> Antilog / Log : ".($antilog / $log);
?>

結果:

Antilog : 59874.1416
Log : 2.3979
Antilog / Log : 24969.407231327
Hope this help you, if else please provide more details (comments) on your code.
于 2013-01-04T10:54:41.753 に答える