我有两个相同的浮点变量,我通过PHP检索它们并减去它们。结果等于(7.105427357601E-15)我试图改为加倍或小数,但没有一个有效。这是我在PHP中使用的:
$giftcard_balance = $giftcard['balance'];
$total = $product['price'];
$total -= $giftcard_balance;
echo $total;
这里没有显示0,而是显示(7.105427357601E-15)
任何人都可以帮忙吗?
答案 0 :(得分:3)
在处理价格和帐户余额时,您会发现DECIMAL(6,2)比FLOAT更容易处理。如果您在使用DECIMAL数据类型时遇到同样的问题,请发布一个具体示例。
使用round()
或类似内容是一个非常糟糕的主意,因为它只是掩盖了问题,而不是修复它。
答案 1 :(得分:1)
为了消除浮动不准确性,您可以使用数字格式。
$a = 7.105427357601E-15;
$b = number_format($a, 2);
echo $a , "\n", $b , "\n";
答案 2 :(得分:0)