MySQL (5.7) 中 JSON 数据列中的浮点值如何舍入?
我无法找到合适的资源来解决我的问题。
发生的情况是这样的:
CREATE TABLE someTable (jdoc JSON);
INSERT INTO someTable VALUES('{"data":14970.911769838869}');
然后选择行:
SELECT * from someTable;
我用不同的最终数字返回数据:
'{“数据”:14970.911769838867}'
知道为什么会发生这种情况吗?我可以通过调整数据来防止这种情况发生吗?或者是否存在舍入精度问题?
最佳答案
double float 的精度约为 16 位小数。您的数字有 17 位,因此无法精确地用 float 表示,并且最后一位数字会出现舍入错误。
参见 How many significant digits have floats and doubles in java?
问题是关于 Java 的,但几乎所有东西都使用相同的 IEEE 754 浮点格式,因此答案非常普遍。
关于MySQL JSON存储不同的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49119871/