上图显示了我的数据库表中名为“igstamt”的列之一。当我使用查询时 "SELECT sum(igstAmt) as igstAmt FROM salesinvoice ,它返回值 21616.7500129491 小数点很多,但正确答案是 21616.75 . 我知道我可以在显示结果时对结果进行汇总,我想知道为什么会发生这种情况?该列中条目的最大小数点是2,所以结果也应该有2个小数点,对吗?列的数据类型为 float .
"SELECT sum(igstAmt) as igstAmt FROM salesinvoice
21616.7500129491
21616.75
float
des4xlb01#
这个 float 数据类型不使用十进制数字表示数字。它用二进制表示数字,所以数字中的二进制数字表示两个的幂,比如16,8,4,2,1,½, ¼, ⅛, 等等。显示为“272.7”、“0.55”等的数字不是存储值的准确表示。例如,显示为“272.7”的数字实际上可能是272.70001220703125。用于为输出设置数字格式的规则可以通过使用少于显示精确值所需的所有数字来隐藏这些差异。添加这些数字时,实际数字与附近十进制表示形式之间的差异可能会增大或减小,具体取决于差异之间的偶然变化。你看到的总数是这些加法的自然结果。
1条答案
按热度按时间des4xlb01#
这个
float
数据类型不使用十进制数字表示数字。它用二进制表示数字,所以数字中的二进制数字表示两个的幂,比如16,8,4,2,1,½, ¼, ⅛, 等等。显示为“272.7”、“0.55”等的数字不是存储值的准确表示。例如,显示为“272.7”的数字实际上可能是272.70001220703125。
用于为输出设置数字格式的规则可以通过使用少于显示精确值所需的所有数字来隐藏这些差异。
添加这些数字时,实际数字与附近十进制表示形式之间的差异可能会增大或减小,具体取决于差异之间的偶然变化。你看到的总数是这些加法的自然结果。