为什么 sum() 查询返回的结果带有更多小数点?

Jay*_*abu 5 mysql floating-point sum decimal

在此输入图像描述

上图显示了我的数据库表中名为“igstAmt”的列之一。当我使用查询时,它返回带有许多小数点的"SELECT sum(igstAmt) as igstAmt FROM salesinvoice值,但正确的答案是。我知道我可以在显示时对结果进行四舍五入,我想知道为什么会发生这样的情况?该列中的条目的小数点最大位数为 2,因此结果也应该有 2 个小数点,对吗?该列的数据类型是.21616.750012949121616.75float

Eri*_*hil 2

float数据类型不表示带十进制数字的数字。它用二进制表示数字,因此数字中的二进制数字表示 2 的幂,例如 16、8、4、2、1、\xc2\xbd、\xc2\xbc、\xe2\x85\x9b 等。

\n\n

显示为 \xe2\x80\x9c272.7\xe2\x80\x9d、\xe2\x80\x9c0.55\xe2\x80\x9d 等的数字并不是存储值的准确表示。例如,显示为 \xe2\x80\x9c272.7\xe2\x80\x9d 的数字实际上可能是 272.70001220703125。

\n\n

用于格式化输出数字的规则可能会使用少于显示准确值所需的所有数字来向您隐藏这些差异。

\n\n

当您添加这些数字时,实际数字和附近的十进制表示形式之间的差异可能会增大或缩小,具体取决于差异之间的机会变化。您看到的总和是这些添加的自然结果。

\n