PHP舍入问题

时间:2013-06-11 13:15:19

标签: php sql rounding-error

我得到了一个四舍五入的问题,我有一个包含3个不同金额的慈善机构的数据库..然后在前面我有3个慈善机构根据分配给他们的金额显示百分比,总百分比总是需要添加到100%..目前如果每个慈善机构分配了1个,它每个显示33%,相当于99%,我需要以一种总是等于100%的方式欺骗​​它。

这是PHP

$charity = $_POST['charity'];
$sql = "SELECT amount FROM charities";
$result = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($result)) {
    $total += $row['amount'];
}

$sql_individual = "SELECT * FROM charities WHERE charity='$charity'";
$result_individual = mysqli_query($con, $sql_individual);

while($row = mysqli_fetch_array($result_individual)) {
    $charity = $row['amount'];
}

echo round($charity / $total * 100,0) . "%";

我找到了一个数学解决方案......但是......我的数学并不是那么好......但是......老实说,我完全不明白这一点:

c = 100 - (a + b) - e,g 34 = 100 - (33 + 33) 

任何帮助大大赞赏..

1 个答案:

答案 0 :(得分:1)

没有舍入问题,你只是舍入到一个整数,这意味着如果你有5个像这样的值:

  1. 12,25%
  2. 13,25%
  3. 20,25%
  4. 30,25%
  5. 34,00%
  6. 对他们使用round($x, 0)后,他们将四舍五入到这些值:

    1. 12
    2. 13
    3. 20
    4. 30
    5. 34
    6. 对这些舍入值求和后得到 99 的值。

      最好在使用百分比时至少舍入到小数点后两位 - 并且仅用于显示目的。您不应该舍入任何将用于进一步数学运算的值......