2

我有两个相等的浮点变量,我通过 PHP 检索它们并减去它们。结果等于 (7.105427357601E-15) 我试图更改为双精度或十进制,但均无效。这是我在 PHP 中使用的:

$giftcard_balance = $giftcard['balance'];
$total = $product['price'];

$total -= $giftcard_balance;
echo $total;

这里不是显示 0,而是显示 (7.105427357601E-15)

任何人都可以帮忙吗?

4

3 回答 3

3

在处理价格和账户余额时,您会发现 DECIMAL(6, 2) 比 FLOAT 更容易处理。如果您在使用 DECIMAL 数据类型时遇到同样的问题,请发布一个具体示例。

使用round()或类似是一个非常糟糕的主意,因为它只是掩盖问题,而不是解决问题。

于 2012-04-09T13:21:27.407 回答
1

为了消除浮点数的不准确性,例如,您可以使用数字格式。

$a = 7.105427357601E-15;
$b = number_format($a, 2);
echo $a , "\n", $b , "\n";
于 2012-04-09T12:33:49.363 回答
0

也许您正在寻找 phpintval 函数

或者也许round 功能

于 2012-04-09T12:32:43.623 回答