SUM() 函数给出不正确的输出
SUM() function gives incorrect output
我有一个 table 名为 trust_fund:
trust_fund table
我的查询是:
$sql = "SELECT SUM(available_balance) AS total_fund FROM trust_funds WHERE type = 'Admin'";
起初,它显示 100000000 是正确的,但是当我更新 table(将 500 从 Admin 转移到 Agent)时,Admin available_balance 变为 99,999,504,而 Agent 变为 500.
管理员余额多了4。我尝试将 500 转回管理员帐户,管理员帐户变为 100000008。
The Output of the Query
我很困惑,因为 tables 显示正确的值,100000000 和 0,但是 运行 查询将给出 100000004。
请帮忙
Table定义
Column
Type
id
INT(AI)
uid
Text
available_balance
Float
wallet_address
Text
type
Text
您的问题是由于您对货币使用了 FLOAT
数据类型。
FLOAT
对于货币列来说是一个糟糕的选择,因为它会引起表示和舍入方面的错误(参见 Is floating point math broken?)
如果您使用的是整数值,请使用 INT
(或 BIGINT
)。或者,使用 DECIMAL
来存储和使用精确的十进制值。
我有一个 table 名为 trust_fund:
trust_fund table
我的查询是: $sql = "SELECT SUM(available_balance) AS total_fund FROM trust_funds WHERE type = 'Admin'";
起初,它显示 100000000 是正确的,但是当我更新 table(将 500 从 Admin 转移到 Agent)时,Admin available_balance 变为 99,999,504,而 Agent 变为 500.
管理员余额多了4。我尝试将 500 转回管理员帐户,管理员帐户变为 100000008。
The Output of the Query
我很困惑,因为 tables 显示正确的值,100000000 和 0,但是 运行 查询将给出 100000004。
请帮忙
Table定义
Column | Type |
---|---|
id | INT(AI) |
uid | Text |
available_balance | Float |
wallet_address | Text |
type | Text |
您的问题是由于您对货币使用了 FLOAT
数据类型。
FLOAT
对于货币列来说是一个糟糕的选择,因为它会引起表示和舍入方面的错误(参见 Is floating point math broken?)
如果您使用的是整数值,请使用 INT
(或 BIGINT
)。或者,使用 DECIMAL
来存储和使用精确的十进制值。