2

私は1つのカウンターを作成し、PHPを使用しており、ほとんどすべてが正常に機能していましたが、小さなバグが1つ見つかりました。

カウンターでの最初の2つのステップは、順調に進んでい$bidます$stax

私の最後の結果$payは次のようになります:8138 + 814 + 448 = 9400しかしそれは私に与えています$9,399

私の出力は次のとおりです。

Value $8,138 bid $814 tax $448 You Pay $9,399
Value $8,952 bid $895 tax $492 You Pay $10,339
Value $9,847 bid $985 tax $542 You Pay $11,373

これが私のphpです

<?php
$i = 0;
$v = 8138;  // value : 8138
do {
    $i++;
    $bid  = $v / 10;      // output : $814
    $ftax = $v + $bid;
    $stax = $ftax / 20;  // output : tax $448
    $pay  = $v + $bid + $stax;   // 8138 + 814 + 448 = 9400
    echo "Value $" . number_format($v) . " bid $" . number_format($bid) . " tax $" . number_format($stax) . " You Pay $" . number_format($pay) . "<br />";
    $v = $v * 1.1;
} while ($i <= 2);
?>

前もって感謝します :)

4

3 に答える 3

4

小数点を落とさないようにエコーラインを変更します。

echo "Value $" . $v . " bid $" . $bid . " tax $" . $stax . " You Pay $" . $pay . "<br />";

値$8138入札$813.8税$447.59あなたが支払う$9399.39
値$8951.8入札$895.18税$492.349あなたが支払う$10339.329
値$9846.98入札$984.698税$541.5839あなたが支払う$11373.2619

したがって、8138 + 813.8 + 447.59 = 9399.39であり、これは9399に切り捨てられます。

一方、すぐに丸めると、813.8は814に切り上げられ、447.59は448に切り上げられますが、開始する前に計算に0.61を追加しただけなので、明らかに数値が高くなります(9400)。

これが、数学と科学の教師が最後まで丸めないように指示する理由です。丸めるたびに、答えの精度が低下するからです。

于 2012-09-27T19:57:11.780 に答える
3

小数を使用したくない場合は、を使用してすべての除算計算を四捨五入しround()ます。また、小数との乗算。ここで実際の動作を確認してください

$i = 0;
$v = 8138;  // value : 8138
 do {
$i++;
$bid  = round($v / 10);      // output : $814
$ftax = $v + $bid;
$stax = round($ftax / 20);  // output : tax $448
$pay  = $v + $bid + $stax;   // 8138 + 814 + 448 = 9400
echo "Value $" . number_format($v) . " bid $" . number_format($bid) . " tax $" .      number_format($stax) . " You Pay $" . number_format($pay) . "<br />";
$v = round($v * 1.1);
于 2012-09-27T19:57:47.983 に答える
2

キャスティング/小数の欠如はあなたがたの問題です。har har har

于 2012-09-27T19:57:17.140 に答える