2

我做了一个计数器,我正在使用 PHP,几乎一切都很好,但我发现了一个小错误。

我在柜台上的前两步进展顺利,即$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

缺乏铸造/小数是你们的问题伙伴。哈哈哈

于 2012-09-27T19:57:17.140 回答