SUM MySQL中出现不正确的小数

Ben*_*Ben 11 mysql sum

我有以下SQL查询.

SELECT SUM(final_insurance_total) as total
FROM `leads`
GROUP BY leads.status
Run Code Online (Sandbox Code Playgroud)

我在前导表中有一行数据,其final_insurance_total值为458796. final_insurance_total的数据类型为float.

出于某种原因,MySQL将单行汇总为"458796.375".

如果我将查询更改为

SELECT (final_insurance_total) as total
FROM `leads`
GROUP BY leads.status
Run Code Online (Sandbox Code Playgroud)

返回正确的值.世界上到底发生了什么?

Fed*_*oli 1

FLOAT不保证任何计算的精度。如果您使用简单的SELECT,则不进行任何计算,因此您将获得原始值。但如果使用SUM(),即使一行,也至少执行一次加法 ( 0 + current_value)。

你真的需要吗FLOAT?例如,如果有 2 位十进制数字,则可以使用 INT 并在所有INSERTs 之前将所有值乘以 100。计算结果时SELECT,您将除以 100。