我在 mysql 数据库中以十进制 (15,2) 数据类型存储了 2 个十进制货币。 它有 2 列。 一个是DR,另一个是CR
当我使用 PHP 读取所有数据并减去总 DR- CR 时,我得到的结果是多个十进制,例如 8505.0800000001。 为什么会这样?
$total_dr=0;
$total_cr=0;
$balance=0;
$result=mysqli_query($link, $query);
while ($row = mysqli_fetch_assoc($result))
{
$total_dr=$total_dr+$row['dr'];
$total_cr=$total_cr+$row['cr'];
$balance=$total_dr-$total_cr;
echo '
<tr>
<td align="right">'.$total_dr.'</td>
<td align="right">'.$total_cr.'</td>
<td align="right">'.$balance.'</td>
</tr>
';
}
这是我得到的一些输出
533026.19 493497.31 39528.88
533026.19 502427.63 30598.56
533026.19 511367.07 21659.12
533026.19 520268.57 12757.62
533026.19 524521.11 8505.0800000001
533026.19 528773.65 4252.54
533026.19 533026.19 0
PHP 本身不支持 DECIMAL(15,2)
格式。相反,它使用浮点数。
我的建议是将所有数字都int
,并在最后一刻进行十进制计算。
像这样:
echo number_format($balance / 100, 2);